所以我是C的初学者,我试图打开并读取文件,将文件的每个元素存储在一个数组中。下面的代码似乎应该在实际工作中,但是当输出给我读取.txt文件输入不工作
50 2500
无论出于何种原因。如果有人可以提供我需要什么,以解决任何帮助,这将不胜感激
...
所以我是C的初学者,我试图打开并读取文件,将文件的每个元素存储在一个数组中。下面的代码似乎应该在实际工作中,但是当输出给我读取.txt文件输入不工作
50 2500
无论出于何种原因。如果有人可以提供我需要什么,以解决任何帮助,这将不胜感激
...
当您从文件用fgets(),你拉字符串(字符数组)与换行符作为分隔符。 fscanf()将更适合从文件中提取内容。
程序打印50的原因是因为magicSquareArray的值[0] while循环后为“2”,而不是2,和“2”的ASCII值是50。
一个例子类似这
#include <stdio.h>
int main(int argc, char *argv[]){
char *input = argv[1];//if(argc > 1)
FILE *inputFile = fopen(input, "r");
if (inputFile == NULL){
printf("Cannot open file for reading!\n");
return -1;
}
int n;
fscanf(inputFile, "%d", &n);//if(1==
int squareArray[n][n];
int r, c, v;
char comma;
r = c = 0;
while(2==fscanf(inputFile, "%d%c", &v, &comma)){
if(comma == ',' || comma == '\n' && c == n-1){//comma == ',' && c < n-1
squareArray[r][c] = v;
if(++c == n){
c = 0;
++r;
}
} else {
fprintf(stderr, "input file invalid format\n");
return -2;
}
}
fclose(inputFile);
if(r != n || c != 0){
fprintf(stderr, "It could not be read correctly.\n");
return -3;
}
for(r = 0; r < n; ++r){
for(c = 0; c < n; ++c){
printf("%d ", squareArray[r][c]);
}
puts("");
}
return 0;
}
您可以使用此功能:
strucT *ReadFromFile (const char *fileName)
{
printf ("\n***Start function ReadFromFile for file name: %s *** \n" , fileName);
strucT *myfilePtr = (strucT*) malloc (sizeof (strucT));
strcpy(myfilePtr->fileName, fileName);
myfilePtr->file = fopen (myfilePtr->fileName , "r");
int i = 0;
fscanf(myfilePtr->file , "%d", &myfilePtr->rows);
printf("rowSize is: %d\n" , myfilePtr->rows);
fscanf(myfilePtr->file , "%d", &myfilePtr->colus);
printf("culSize is: %d\n" , myfilePtr->colus);
myfilePtr->elementNumber = (myfilePtr->rows) * (myfilePtr->colus);
printf("arraySize is %ld\n", myfilePtr-> elementNumber);
// myfilePtr->array = (unsigned char*)malloc(sizeof(unsigned char) * (myfilePtr->elementNumber));
for (i = 0 ; i < myfilePtr->elementNumber; i++)
{
fscanf(myfilePtr->file, "%1d", (int*) &myfilePtr->array[i]);
//printf("%d" , myfilePtr.array[0]);
}
// FOR DEBUG
for (i = 0 ; i < 12 ; i++)
printf ("%d" , myfilePtr->array[i]);
printf ("\n");
fclose(myfilePtr->file);
printf ("\n***Finish function ReadFromFile for file name: %s *** \n" , fileName);
return strucT;
}
这个函数读取第一和第二int和保存。 在此之后,她读取数组值(每个值为1个字符)
可能重复的[从C中的文本文件读取int值](http://stackoverflow.com/questions/4600797/read-int-values - 从文本文件中的c) –
我刚刚编辑我的帖子,以包括输入文件的人 –
此外,试图使用“从C中的文本文件读取int值”中提出的解决方案不起作用 - 可能是因为我的.txt文件有逗号,而其他帖子都是整数。 –