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;
}