사용자 (여러 줄)의 입력을 읽고 fputs()를 사용하여 파일에 쓰고 싶었습니다.fgets를 사용하여 사용자의 입력을 여러 줄 읽고 C에서 fputs를 사용하여 파일에 쓰는 방법?
여기, 내가 프로그램 (I 리눅스를 사용하고 있습니다)의 입력 프롬프트를 닫습니다 Ctrl + C를 사용하고 사용자의 입력을 받고 후 내 코드
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
char s[25];
fp=fopen("myname","w");
if(fp==NULL)
{
perror("Error opening file\n");
exit(1);
}
while(fgets(s,25,stdin)!=NULL)
fputs(s,fp);
fclose(fp);
return 0;
}
입니다. 그럼 내가 파일을 열면, 아무것도 들어 있지 않다. 어떻게 해결할 수 있을까요?
fputs() & fgets()의 사용에 문제가 있습니까?
코드는 25 바이트 라인에서 깨질 것입니다. 당신은'fgets (s, sizeof (s) -1, stdin)'을 사용할 수 있고,'memeset (s, 0, sizeof (s)); 그리고 getline은 (라인을 동적으로 할당하기 때문에) 더 나은 함수입니다. –
@BasileStarynkevitch,'fgets'의 man 페이지는'fgets()는 size 문자보다 작은 하나의 문자를 stream에서 읽어 들여서 s가 가리키는 버퍼에 저장합니다. '\ 0'은 버퍼의 마지막 문자 '라고합니다. 따라서'fgets()'호출에 25 개가있는 것이 안전합니다. 이 코드를 25 자보다 긴 행으로 테스트했습니다. 작동하지 않는 이유는 버퍼링입니다. 'fflush (fp)'를 추가하면 해결되었습니다. 후회에 대한 죄송합니다. – Bhaskar