私は非常に単純な問題を抱えています。ファイルの内容を C の char 配列に読み込む必要があります。ファイルは常に 2 列の文字としてフォーマットされます。たとえば、次のようになります。
A B
B C
E X
C D
各文字はグラフの頂点を表しており、これについては後で扱います。私は C++ と Java を使用してプログラミングを学びましたが、特に C にはあまり詳しくありません。
私が理解できない問題の原因は、ファイルが複数行の長さであるという事実です。各文字が配列のスロットを占有する必要があるため、この場合は :
array[0] = 'A', array[1] = 'B', array[2] = 'B', array[3] = 'C'
などになります。
最終的には、配列に重複が含まれないようにする必要がありますが、後で処理できます。今学期の初めに、ファイルから 1 行の 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 行の空白行です。どんな助けでも素晴らしいでしょう!