Chr*_*nam 0 c printf newline char
例如,当我键入时,test \n test尝试使用此代码进行编写
FILE *f = fopen(file, "w+");
fflush(f);
if (f==NULL) {
//perror(f);
return 0;
}
else{
int i = fprintf(f, "%s", text);
if (i>0) {
fclose(f);
return 1;
}
else{
fclose(f);
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
然后用它来读它
FILE *f = fopen(file, "r");
static char c[100000];
const char *d;
if (f!=NULL) {
if (fgets(c, 100000, f) !=NULL){
d = c;
}
else{
d = "No text";
}
}
else{
/*
char *ff = f;
perror(ff);
*/
d = "File not found";
}
fclose(f);
return d;
Run Code Online (Sandbox Code Playgroud)
它只会读写test,而不是test新行test.为什么这不起作用?
该fgets()函数读取它遇到的第一个换行符,或者当它用尽空间来存储结果时,或者当它获得EOF时停止(因此没有更多数据可供读取).
随后的调用fgets()将在第一个换行符后收集信息.
如果你想一次阅读,请考虑fread().OTOH,你也必须解决这些问题(特别是:(1)你可能要求最多1000个字节,但只能回20,所以你的代码必须正确处理短读;和(2)fread()将不会为您终止输入字符串,不像fgets()等).
在编写时,fwrite()它将是逻辑上的补充fread(),但您可以很好地继续使用fprintf()和朋友fputs(),或者putc(),或者任何其他标准I/O编写函数.对于'如果你使用这些函数编写,你必须阅读这些其他函数',没有正式的约束.这取决于你写作和阅读的性质,但你通常可以自由地转换,看起来最方便.
| 归档时间: |
|
| 查看次数: |
949 次 |
| 最近记录: |