나는 정수 파일을 읽습니다. 각 줄의 정수를 새로운 배열에 저장하고 싶습니다. 이를 위해 파일의 새로운 라인을 감지하고 싶습니다. 아무도 이걸 알면 도와주세요.C 프로그램을 사용하여 파일의 새 줄을 감지하는 방법
1 2 4 5 6
7 3 2 5
8 3
9 7 6 2
나는 정수 파일을 읽습니다. 각 줄의 정수를 새로운 배열에 저장하고 싶습니다. 이를 위해 파일의 새로운 라인을 감지하고 싶습니다. 아무도 이걸 알면 도와주세요.C 프로그램을 사용하여 파일의 새 줄을 감지하는 방법
1 2 4 5 6
7 3 2 5
8 3
9 7 6 2
#include <stdio.h>
int main (int argc, char **argv) {
FILE *fp = fopen ("d:\\abc.txt", "r");
char line[1024];
char ch = getc (fp);
int index = 0;
while (ch != EOF) {
if (ch != '\n'){
line[index++] = ch;
}else {
line[index] = '\0';
index = 0;
printf ("%s\n", line);
}
ch = getc (fp);
}
fclose (fp);
return 0;
}
이 프로그램에서 일부 세분화 오류가 있습니다 ... 이유를 찾으려고합니다. –
세그멘테이션 오류가 발생하지 않습니다. 줄 수는 1024로 제한되어 있습니다.이 예제 코드는 확장 할 수 있습니다 더 나아. – Avinash
줄 수가 4 ~ 5 개 미만입니다 ... –
당신이 다음에 입력 한 줄을 읽어 '32'와 '입력' '13'에 의해 및/또는과 '10'
ASCII 값을 절대 하드 코딩하지 마십시오. 공백으로는 '', 줄 바꿈에는 \ n ', 캐리지 리턴에는'\ r '과 같은 문자 상수를 사용하십시오. 또한 그것이 의미하는 것이면 isspace()를 사용하십시오. – unwind
이 작업에 getc()
을 사용하면 문제가 없지만 getc()
반환 유형이 int임을 잊지 마십시오. 문자를 다시 입력하면 "작동"되지만 EOF = -1 = 0xFF
(대부분의 C 컴파일러에서) 문자로 다시 입력 한 후에 0xFF
문자가 EOF
으로 감지되므로 비 ASCII 입력 파일에 문제가있을 수 있습니다.
#include<stdio.h>
void main()
{
FILE *p;
int n;
int s=0;
int a[10];
p=fopen("C:\\numb.txt","r");
if(p!=NULL)
printf("file opened");
while((n=getc(p))!=EOF)
{ if(n!=NULL && n!='\n')
{
printf("\n%d",n);
a[s]=n;
++s;
}
}
fclose(p);
getchar();
}
변환 할 int와 변환 할 수없는 것이 확실하지만 프로그램이 0이 아닌 숫자로 작동합니다. 나는 시각적 인 기초에 노력했다.
음, 지금까지 무엇을 가지고 계신가요? 파일을 열고 읽는 방법을 알고 있습니까? 한 번에 한 줄씩 읽는 법을 알고 있습니까? –
['fgets()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/fgets.html)은 입력 스트림에서 ** lines **을 읽습니다. 그것과 ['sscanf()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/scanf.html)을 사용하십시오. – pmg