我正在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()将该指针视为字符值,这将导致垃圾。

07-24 09:45