我正在C中使用基本的fputc应用程序。正在编写/附加“。”。
在文件中使用for循环的次数。但是,文件显示的是垃圾字母,而不是“”。 。
#include <stdio.h>
int main()
{
int i = 0 ;
FILE *txtfile ;
txtfile = fopen ( "fullstop.txt" , "a" ) ;
for ( ; i < 100 ; i++ )
{
fputc ( "." , txtfile ) ;
}
fclose ( txtfile ) ;
return 0 ;
}
我没有在代码中看到任何语法错误,但也许我错了。 GCC在编译时显示以下警告和错误。这可能有所帮助。
warning: passing argument 1 of ‘fputc’ makes integer from pointer without a cast [-Wint-conversion]
fputc ( ".", txtfile ) ;
^
/usr/include/stdio.h:573:12: note: expected ‘int’ but argument is of type ‘char *’
extern int fputc (int __c, FILE *__stream);
如果我用fprintf代替它会起作用。
fprintf(txtfile,".");
我也尝试过fflush,但是也没有解决。
所以,我的问题是为什么fputc无法正常工作?
最佳答案
fputc()
的第一个参数必须是单个字符,而不是字符串。
fputc('.', txtfile);
传递字符串时,它将转换为指针,然后
fputc()
将该指针视为字符值,这将导致垃圾。