我正在向文件中写入一个字符串。但只有字符串的第一部分才插入到文件中。其他人失踪了。例如:如果我写"我喜欢花","我"只会被写入文件。
#include <stdio.h>
int main()
{
char string[50];
int marks,i,n;
FILE *fptr; fptr=(fopen("string.txt","w"));
if(fptr==NULL){
printf("Error!");
return 0;
}
printf("Enter a string : n");
scanf("%s", string);
//fprintf(fptr,"%s",string);
fwrite(string, 1, sizeof(string), fptr);
fclose(fptr);
return 0;
}
scanf()
将在第一个空格停止读取:这就是问题所在。scanf("%s")
仅从标准输入读取I
。要读取整行内容,请使用fgets()
。使用strlen()
只写入读取的内容,而不是使用sizeof(string)
。
在代码中,scanf("%s",string)
只占用第一个空格的字符串。要读取总字符串"I Like Flowers",您必须使用scanf
函数,如下所示:
scanf("%[^n]s,string);
它会起作用的。