我在我的函数中收到了这些编译警告,但在我的代码中找不到任何错误:
警告:
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都不能帮助找到解决这个问题的方法。
答案 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+");