我有一個非常簡單的問題。我需要在一個文件中的內容讀入到C中的字符數組的文件將總是被格式化爲信兩列,例如:將格式化文件讀入C中的char數組中
A B
B C
E X
C D
每個字母表示在圖上一個頂點,其I」稍後會處理。我學習了使用C++和Java編程,但我並不特別熟悉C語言。
是什麼導致我無法弄清楚的問題是文件長度爲多行。我需要每個字母佔用陣列中的一個插槽,因此在這種情況下,它應該是: array[0] = 'A', array[1] = 'B', array[2] = 'B', array[3] = 'C'
等等。
最後我需要數組不包含重複項,但我可以稍後處理。我在本學期早些時候編寫了一個程序,它從一個文件的單行中讀取,它工作正常,所以我複製了大部分代碼,但在這種情況下它不起作用。這是我到目前爲止有:
#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(文件,0,SEEK_SET),但同樣的事情。我看不出爲什麼我得到這個。 – DaBurto
對不起,我實際上沒有試過這個來告訴你它是否有效,我應該提到這一點。我會_actually_試一下,讓你知道。 – Kitchi
由於某些原因,它似乎在閱讀額外的行?有了這個代碼我的計數= 20使大小= 40,他們應該分別爲4和8(或9?包括NULL終止?不知道)。 – DaBurto