所以我是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文件有逗號,而其他帖子都是整數。 –