fprintf()和fscanf()函数
文件I/O函数fprintf()
和fscanf()
函数的工作方式与printf()
和scanf()
类似,区别在于前者需要用第1个参数指定待处理的文件。
下面演示了fprintf()
和fscanf()
函数的用法:用户在控制台输入,当输入字符q时,直接退出,输入其他字符串时,会直接输出到文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char arr[100];
char name[] = "C:\\Users\\MSI-\\Desktop\\test.txt";
FILE *f ;
if((f = fopen(name, "w+")) == NULL) {
printf("Can't open %s\n", name);
exit(1);
}
while (!(fscanf(stdin, "%s", arr) == 1 && arr[0] == 'q'&& strlen(arr) == 1)) {
fprintf(f, "%s", arr);
fprintf(f, "%s", "\n");
}
if(fclose(f) != 0) {
fprintf(stderr, "error");
}
return 1;
}
测试效果:
fgets()和fputs()函数
fgets()
函数,它的第1个参数和gets()
函数一样,也是表示存储输入位置的地址(char * 类型);第2个参数是一个整数,表示待输入字符串的大小;最后一个参数是文件指针,指定待读取的文件。下面是一个调用该函数的例子:
fgets(buf, STLEN, fp);
fgets()
函数读取输入直到第1个换行符的后面,或读到文件结尾,或者读取STLEN-1
个字符,然后,fgets()
在末尾添加一个空字符使之成为一个字符串。字符串的大小是其字符数加上一个空字符。
如果fgets()
在读到字符上限之前已读完一整行,它会把表示行结尾的换行符放在空字符前面。****fgets()
函数在遇到EOF
时将返回NULL
值。如果未遇到EOF
则返回之前传给它的第一个参数地址。
fputs()
函数接受两个参数:第1个是字符串的地址;第2个是文件指针。该函数把根据传入地址找到的字符串写入指定的文件中。和puts()
函数不同,fputs()
在打印字符串时不会在其末尾添加换行符。下面是一个调用该函数的例子:
fputs(buf, fp);
这里,buf
是字符串的地址,fp
用于指定目标文件。