我有一个非常简单的问题。我需要在一个文件中的内容读入到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