我在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 无效?
答案 0 :(得分:4)
fputc('.', txtfile);
的第一个参数必须是单个字符,而不是字符串。
fputc()
当你传递一个字符串时,它会被转换为一个指针,然后{{1}}将该指针视为一个字符值,这会导致垃圾。