간단한 파일 입출력에 관한 질문입니다 fprintf()에 관한것;
일단 소스는
#include
#include
#define MAX 40
int main(void)
{
FILE *fp;
char words[MAX];
if((fp = fopen("wordy.txt","a+"))==NULL){
fprintf(stdin,"Can't open\"words\"file.\n");
exit(1);
}
puts("enter words to add to the file ; press the Enter");
puts("Key at the beginning of a line to terminate.");
while(gets(words) != NULL && words[0] != '\0')
fprintf(fp,"%s ", words);
puts("File contents: ");
rewind(fp);
while(fscanf(fp,"%s",words)==1)
puts(words);
if(fclose(fp) != 0)
fprintf(stderr,"Error closing file\n");
return 0;
}
이 소스입니다..
제가 이해가 안되는 부분은
fprintf(fp,"%s ", words);
이부분입니다.
만약 asdf[enter]ASDF[enter][enter] 이렇게 입력한다고 치면
"%s" 일경우 출력물: asdfASDF 입니다;
"%s "일경우 출력물: asdf
ASDF 입니다.
"%s\n"일경우 출력물: asdf
ASDF 입니다.
"%s" 와 "%s\n" 은 왜 저렇게 나오는지 않겠는데요
"%s " 일때 왜 asdf ASDF 가 아니라
asdf
ASDF 가 나오는지 모르겠어요.ㅠ
가르쳐주세열;ㅠ
스트링을 받기때문입니다.
gets()나 fgets()나 둘다 개행문자(\n)을 만날때까지 버퍼에서 읽어들입니다.
그러므로 당연히 개행문자도 파일에 저장이 되는것이죠.
개행문자를 제거하고 싶으시면
저장하기전에
word[strlen(word)-1]='\0';
하시고 저장하시면 개행문자가 없어집니다.
댓글 달기