我有一个非常简单的问题。我需要将文件的内容读入 C 中的 char 数组。该文件将始终格式化为两列字母,例如:
A B
B C
E X
C D
每个字母代表图上的一个顶点,我稍后会处理。我学习过使用 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 个空行。任何帮助都会很棒!