为什么“fputc”在这里不起作用?它是在扔垃圾信

时间:2016-07-19 09:57:07

标签: c printf

我在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 无效?

1 个答案:

答案 0 :(得分:4)

fputc('.', txtfile); 的第一个参数必须是单个字符,而不是字符串。

fputc()

当你传递一个字符串时,它会被转换为一个指针,然后{{1}}将该指针视为一个字符值,这会导致垃圾。