编写文件时编译警告,有什么问题?

时间:2013-05-03 19:27:00

标签: c fopen compiler-warnings

我在我的函数中收到了这些编译警告,但在我的代码中找不到任何错误:

警告:

src.c: In function ‘writeFiles’:
src.c:119:18: warning: character constant too long for its type [enabled by default]
src.c:119:2: warning: passing argument 1 of ‘fopen’ makes pointer from integer without a cast [enabled by default]
/usr/include/stdio.h:269:14: note: expected ‘const char * __restrict__’ but argument is of type ‘int’

我的职能:

FILE *outfile;
int writeFiles(int pwm, int rpm)
{

    outfile = fopen('/dev/fan/rpm', "w+");  /* line 119 with the warnings */ /*create the new file */ 
    fprintf(outfile, "%d", rpm);            /*write the rpm to the file */
    fclose(outfile);                        /*close the file */

    return ( 0 );

}

我希望你能帮助我解决这个问题。 google和stackoverflow都不能帮助找到解决这个问题的方法。

3 个答案:

答案 0 :(得分:2)

警告正在发生,因为fopen将char *作为参数,但您传递了一个(太长)字符。

fopen('/dev/fan/rpm', "w+")替换为fopen("/dev/fan/rpm", "w+") Double 引用。

答案 1 :(得分:1)

正如Ryan所指出的,你的文件名实际上是char,字符太多了。它解释了警告和说明。

答案 2 :(得分:0)

我相信你需要在fopen调用中围绕文件名加双引号。

e.g。

outfile = fopen("/dev/fan/rpm", "w+");