나는 매우 간단한 문제가 있습니다. 각 편지는 내가 '그래프에 정점을 나타냅니다형식화 된 파일을 C에서 char 배열로 읽음
A B
B C
E X
C D
: 나는 파일은 항상 문자의 두 컬럼으로 포맷됩니다 C에서 문자 배열, 등으로 파일의 내용에서 읽을 필요 나중에 다룰 것입니다. C++과 Java를 사용하여 프로그래밍을 배웠지 만 C에 특별히 익숙하지 않습니다.
내가 알 수없는 문제의 원인은 파일이 여러 줄로 길다는 사실입니다. 배열의 슬롯을 차지하기 위해 각 문자가 필요합니다. 따라서이 경우에는 array[0] = 'A', array[1] = 'B', array[2] = 'B', array[3] = 'C'
등이됩니다.
결국에는 중복을 포함하지 않도록 배열이 필요하지만 나중에 처리 할 수 있습니다. 나는 이번 학기 초에 파일에서 int의 한 줄을 읽는 프로그램을 작성 했으므로 잘 작동 했으므로 대부분의 코드를 복사했지만이 경우에는 작동하지 않습니다. 내가 파일 열기를 테스트 할 적절하고 이것 저것 읽을 필요가 알고
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
int i;
int count = 0;
char * vertexArray;
char ch = '\0';
// open file
FILE *file = fopen(argv[1], "r");
// count number of lines in file
while ((ch=fgetc(file)) != EOF)
if(ch == '\n') count++;
// numbers of vertices is twice the number of lines
int size = count*2;
// declare vertex array
vertexArray = (char*) calloc(size, sizeof(char));
// read in the file to the array
for(i=0; i<size; i++)
fscanf(file, "%c", &vertexArray[i]);
// print the array
for(i=0; i<size; i++)
printf("%c\n", vertexArray[i]);
fclose(file);
}
하지만 나중에 그에 추가 할 것입니다 : 여기에 지금까지 무슨이다. 배열을 지금 당장 읽으려고합니다. 이 경우 내 출력은 8 개의 빈 줄입니다. 어떤 도움이라도 좋을 것입니다!
귀하의 제안이 보인다,하지만 난 그것을하려고 할 때 세그먼트 오류를 얻을. 되감기 (파일)와 관련이있는 것 같습니다. 나는 또한 fseek (file, 0, SEEK_SET)하지만 똑같은 시도를했다. 왜 내가 이걸 얻었는지 알 수가 없어. – DaBurto
죄송합니다. 실제로 작동하는지 알려 드리지 않고 말씀 드렸습니다. 나는 실제로 그것을 밖으로 시도하고 알려 드리겠습니다. – Kitchi
어떤 이유로 여분의 줄을 읽는 것 같습니다. 이 코드로 my count = 20 making size = 40, 여기서 그들은 4와 8 (또는 NULL 터미네이터를 포함 할 것인가? – DaBurto