我正在写一个C程序,但没有看到一个fputc或fputs调用的结果.我需要帮助才能理解为什么会这样.
#include <stdio.h>
int main(void)
{
FILE *stream;
int file_state;
int input1=0;
stream = fopen("data3.txt", "w");
if (stream == NULL)
puts("file open error");
puts("input data");
while (input1 != EOF)
{
input1=fgetc(stdin);
putchar(input1);
//fputc(input1, stdout);
//fprintf(stream, "tee");
//fputc('A', stream);
//fputs("sass", stream);
}
file_state=fclose(stream);
if(file_state==EOF)
puts("file close error");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是,fputc并且fputs不能正常工作.我在mac lion 64 bit上,并在终端上使用make和./file_name.
在while循环中,如果我写
putchar(input1);
Run Code Online (Sandbox Code Playgroud)
它输出(打印)到终端.但是,所有注释行都不起作用.
fputc(input1, stdout);
Run Code Online (Sandbox Code Playgroud)
还在终端上打印一个空白行.
该程序创建一个文件,但似乎完全是空的.可能是什么问题呢?
你是否仍在开放时查看文件的内容?请注意,文件写入是缓冲的,因此在关闭/刷新流之前,您可能无法看到数据.
如果是这种情况,您可以尝试调用fflush(stream)循环中的最后一行.或者等到文件关闭,当然.
另请注意,如果使用Ctrl-C结束程序,则可能永远不会写入数据!
不同之处在stdout于此流通常是行缓冲的,这意味着无论何时输出新行字符,流都会自动刷新,但普通流不会.