scanf函数一遇上空格就会结束字符串的输入
fscanf也是如此,例如下面代码:
#include<stdio.h> int main() { FILE *fp; char str[50]; fp = fopen("a.txt","w"); fprintf(fp,"%s","Happy Day!"); fclose(fp); fp = fopen("a.txt","r"); fscanf(fp,"%s",str); printf("%s",str); fclose(fp); return 0; }
由于fscanf函数遇上空格就会结束字符串输入,所以程序只能输出显示Happy。
将上述程序中的 fscanf(fp,"%s",str);换成
fscanf(fp,"%[^\n]",str);
%[^\n]代表遇上\n才结束字符串的读取。
#include<stdio.h> int main() { FILE *fp; char str[50]; fp = fopen("a.txt","w"); fprintf(fp,"%s","Happy Day!"); fclose(fp); fp = fopen("a.txt","r"); fscanf(fp,"%[^\n]",str); printf("%s",str); fclose(fp); return 0; }