2013-05-03 3 views
0

나는이 내 기능에 경고를 컴파일하고 내 코드에서 오류를 찾을 수 없습니다지고있어파일을 쓰는 동안 경고를 컴파일합니다. 뭐가 잘못 되었나요?</p> <p>경고 :

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

코드 스 니펫에 경고를주는 행 번호를 표시 할 수 있습니까? 또한'fopen'은 char *을 첫 번째 매개 변수로 사용합니다. 단락 기호는 왜 작은 따옴표입니까? – Ryan

+1

'''문자가 문제가됩니다. 개별 문자에만 작은 따옴표를 사용하십시오. 문자열에는 큰 따옴표를 사용하십시오. –

+2

' '/ dev/fan/rpm'' --->' "/ dev/fan/rpm"' – BLUEPIXY

답변

2

fopen가 매개 변수로 문자 *이 걸리기 때문에 경고는 무슨 일이 일어나고하지만 당신은 그것을 (너무 오래) 문자를 전달하고 있습니다.

fopen('/dev/fan/rpm', "w+")fopen("/dev/fan/rpm", "w+")으로 바꿉니다. 두 번 따옴표.

+0

고마워요, 이건 고쳐 줘, 내가 할 수있게 되 자마자 네 답을 받아 들일거야. (9 분) –

+0

듣기 좋다 : – Ryan

+1

사실, 그는'char'가 아니라'int'를 전달하고있다. ''a'' 또는''foo''와 같은 정수 문자 상수의 타입은'int'입니다. –

0

나는 fopen 호출에서 파일 이름을 큰 따옴표로 묶어야한다고 생각한다.

라이언으로

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

은 파일 이름이 실제로 너무 많은 문자가있는 char입니다 지적한다. 경고와 메모를 모두 설명합니다.