이 코드는 결과를 파일에 저장합니다. 마찬가지로, 라인 차단기 또는 sth 감지에 대한 일부 문제가 있습니다. 다음은 예입니다 :파일을 줄 바꿈하는 문제가 발생했습니다.
출처 :
This is a line.
This is another line.
Quick brown fox jumps over a lazy dog!
결과 :
(blank line)
.enil a si sihT
.enil rehtona si sihT!god yzal a revo spmuj xof nworb kciuQ
#include <stdio.h>
#include <string.h>
char *reverse (char *str)
{
char *begin, *end, c;
if (!str || !(*str))
return NULL;
for (begin=str, end=str+strlen(str)-1; begin<end; begin++, end--)
{
c=*begin;
*begin=*end;
*end=c;
}
begin=str+strlen(str)+1; *begin='\0'; //??
return str;
}
void main(void)
{
char line[1000];
FILE *fsrc, *frslt;
fsrc=fopen("source.txt", "r");
if (fsrc==NULL) return;
frslt=fopen("result.txt", "w");
while (!feof(fsrc))
{
fgets (line, 1000, fsrc);
fputs (reverse(line), frslt);
}
fclose(fsrc);
fclose(frslt);
}
- http://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong ([while 루프에서 무엇이 일어 났는지를 결정하기 위해 feof 잘못 숙지]) –
코드는 정상적으로 작동하지만 선이 너무 바뀌고 있습니다. 새로운 줄 바꿈 ('\ n')이 역순으로 일어나므로 줄 바꿈이 각 줄의 시작 부분에 있지만 "빠른 갈색 여우 ..."에는 줄이 없습니다. 결국 피드, 그래서 라인 2와 3 함께 smooshed입니다. '\ n'을 사용하여 줄 바꿈을 시도하고 있습니다. –
내부에서 작업하고 있으므로 필요하지 않습니다.'begin = str + strlen (str) +1; * begin = '\ 0';'그리고 너무 많이 추가하고있다. (버퍼가 크지 만 여전히 문제는 없다.) –