⑴ C语言向文件写入单个字符
调用库函数fputc(ch,fp);就把ch表示的一个字符写入文件了,fp是指向被打开的文件的指针。也可以用fprintf(fp,"%c",ch);操作。
⑵ 怎么用C语言实现 输入一个串字符存到一个文本文档中
1.通过fopen打开文件,fputs像文件写入数据,fclose关闭文件。
#include <stdio.h>
int main()
{
FILE *pf = fopen("F:/1.txt", "w+"); // 以写、创建形式打开文件
if (!pf)
return -1;
fputs("123abc456-1452=!@#$", pf); // 像文件写入字符串
fclose(pf); // 关闭文件
printf("ok");
return 0;
}
2.FILE *fopen( const char *fname, const char *mode );
fopen()函数打开由fname(文件名)指定的文件, 并返回一个关联该文件的流.如果发生错误, fopen()返回NULL. mode(方式)是用于决定文件的用途(例如 用于输入,输出,等等)
Mode(方式) 意义
"r" 打开一个用于读取的文本文件
"w" 创建一个用于写入的文本文件
"a" 附加到一个文本文件
"rb" 打开一个用于读取的二进制文件
"wb" 创建一个用于写入的二进制文件
"ab" 附加到一个二进制文件
"r+" 打开一个用于读/写的文本文件
"w+" 创建一个用于读/写的文本文件
"a+" 打开一个用于读/写的文本文件
"rb+" 打开一个用于读/写的二进制文件
"wb+" 创建一个用于读/写的二进制文件
"ab+" 打开一个用于读/写的二进制文件
3.int fputs( const char *str, FILE *stream );fputs()函数把str(字符串)指向的字符写到给出的输出流. 成功时返回非负值, 失败时返回EOF.
4.int fclose( FILE *stream );
函数fclose()关闭给出的文件流, 释放已关联到流的所有缓冲区. fclose()执行成功时返回0,否则返回EOF.
⑶ C语言对文件操作,用fputs函数不能把字符串写入文件
读写一个字符数据
经过前面的学习,我们学习了fread()、fwrite()函数的操作,这两个函数都是对一段“内存块”进行读写操作。那么,C语言还提供了fgetc()、fputc()函数,对文件中的一个字符进行读写操作。这些函数的定义如下:
int fgetc(FILE *stream);
函数说明:从stream文件指针所指向的文件读取1个字符,通过函数的返回值返回。例如:
char c = fgetc(fp);
就是从fp指向的文件,读取1个字符的数据,通过函数返回值,设置给字符变量c。
int fputc(int c, FILE *stream);
函数说明:把参数c表示的字符,写入stream文件指针所指向的文件。例如:
char c = 'M';
fputc(c, fp);
就是把参数c表示的字符变量,写入文件指针fp指向的文件。如下是一个程序测试例子:
可以看到,新建一个test.txt文件,调用fputc()函数,把一个字符写入到文件中。然后,再重新打开文件,读取文件的数据,调用fgetc()函数读取一个字符,得到的数据是刚刚写入的字符。所以,通过这个例子,我们学习了fgetc()、fputc()函数的操作,对文件进行一个字符的读写操作。
3.5 读写一行字符数据
C语言提供了fgets()、fputs()函数对文件进行读写“一行”的数据,字符串以'\n'字符换行,注意,所谓的“一行”数据,它的最后一个有效字符是’\n’,表示换行符号。字符串的结束符,还是以’\0’为结尾,表示字符串结束符。其中fgets()函数的定义如下:
char *fgets(char *buf, int size, FILE *stream);
函数说明:从stream函数指针所指向的文件中,读取size-1个字节到buf缓存,不是读取size个字节,因为,buf[ ]缓存的第size个字节存放字符串结束符,形成一个有效的字符串。
当读取到换行符时,或者到达文件末尾时,结束文件的读取操作。
返回值:读取数据成功,返回存储数据的缓存地址,就是参数buf的地址。如果读取数据失败,返回NULL。例如,读取文件完,没有数据可以再读取,则返回NULL。
int fputs(const char *buf, FILE *stream);
函数说明:把参数buf指针指向的字符串,写入到stream指向的文件。参数buf是一个字符串指针,必须指向一个合法的字符串。合法的字符串是以字符串结束符'\0'结束,表示一个字符串的结尾。
返回值:写入数据成功,返回成功写入的字符个数。失败返回EOF标记。
如下是一个程序测试例子:
程序运行结果如下:
可以看到,程序调用fputs()函数,往打开的test.txt文件写入数据。直接写入一个字符串。然后,关闭文件,再重新打开文件。调用fgets()函数读取数据,读取数据的时候,遇到回车换行的字符'\n',表示一行数据,那么,就返回读取到的一行数据。
在实际的项目开发过程中,fgets()函数非常有用。例如,我们定义一个config.txt文件,里面存放一些系统的配置信息,文件的格式如下:
cat /etc/config.txt
sys_pwd=123456
ApCliAuthMode=WPA2PSK
ApCliEncrypType=AES
ApCliChannel=1
ApCliDefaultKeyID=1
那么,文件的配置信息是一行一行数据,所以,可以用fgets()函数,快速读取出每一行系统配置信息。
⑷ C语言怎么将输入函数体的文字写到文本文件里面
以下是桐蚂一个简单的C语言程序,可以实现将键盘输入的字符串写入文件中,并统计其中字母、数字、空格和其他字符出现的次数,并将字母和数字存放到另一个文件中:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[1000], ch;
int i = 0, letter_count = 0, digit_count = 0, space_count = 0, other_count = 0;
// 从用户输入中读取字符串
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
// 将字符串写入文件并统计字符出现次数
FILE *fp = fopen("input.txt", "w");
if (fp == NULL) {
perror("fopen");
return 1;
}
while ((ch = str[i++]) != '\0') {
fputc(ch, fp);
if (isalpha(ch)) {
letter_count++;
} else if (isdigit(ch)) {
digit_count++;
} else if (isspace(ch)) {
space_count++;
} else {
other_count++;
}
}
fclose(fp);
// 统计字母和数字出现次数并将其存入文件
fp = fopen("output.txt", "w");
if (fp == NULL) {
perror("fopen");
return 1;
}
fprintf(fp, "Letters: %d\n", letter_count);
fprintf(fp, "Digits: %d\n", digit_count);
fclose(fp);
// 输出字符出现次数的统计结果
printf("Letter count: %d\n", letter_count);
printf("Digit count: %d\n", digit_count);
printf("Space count: %d\n", space_count);
printf("Other count: %d\n", other_count);
return 0;
}
```
在上述代码中,我们使用 `fgets()` 函数从用户输入中读取字符串,并将其写入名为 `input.txt` 的文本文件中。在此过程中,我们使用了 `isalpha()` 和 `isdigit()` 等函数判断字符类型,并统计其中字母、数字、空格和其他字符的出现次数。
然后,我们使用 `fprintf()` 函数将字母和数字的出现次数分别存入名为 `output.txt` 的文件中。
最后,输出字符出现芹嫌次数的统计结果。
需要局首埋注意的是,在实际应用中还需要考虑更多的边界情况和错误处理。例如,可能出现无法打开或关闭文件、读写文件出错等问题。此外,如果输入的字符串超出预设数组大小,可能会引起缓冲区溢出等问题。
⑸ C语言怎么把字符串用fprintf写入文本文件
把把字符串写入文件,基本示例如下:
FILE *fp;
char s[]= "hello world!";
char c = ' ';
fp = fopen("file.txt","a");
fprintf(fp,"%s",s); //字符串使用%s
fprintf(fp,"%c",c); //字符使用%cfclose(fp);从文件读取到字符串 char s1[30];fp=fopen("file.txt","r");fscanf(fp, "%[^ ] ", s1);printf("%s ",s1);fclose(fp); 本来挺简单的一件事,可是让我头疼了好几个小时。
在前面写了 fp = fopen("file.txt","a");
fprintf(fp,"%s",s); //字符串使用%s
但是fclose(fp);这句被我写在了return 0;之前,然后字符串死活写不进文件里面去。后来终于发现是因为使用了while(1)循环读取端口数据,所以一直没有执行fclose(fp);这句,才导致文件里面一直是空的。所以fclose(fp);这句话不要忘记了哦~~ :)