2016-09-27 19 views
0

我正在用C编写一个程序,其中我正在读取.txt文件中的数据,并且我的目标是将.txt文件中的每个元素放入一个阵列。当我编译并运行程序时,返回值50,55和0。这些是ASCII值(我不确定为什么这些元素被存储为ASCII码,但现在可以)为2,7和0(这意味着自从我们到达.txt文件末尾以来没有进行初始化。为什么我的程序不读从一开始??将txt文件放到数组中从第12个元素开始

.txt文件...

int main(int argc, char *argv[]){ 
FILE *inputFile; 
char *input = argv[1]; 
char magicSquareArray[257]; 

inputFile = fopen(input, "r"); 

if (inputFile == 0){ 
    printf("Cannot open file for reading!\n"); 
    return -1; 
} 

fscanf(inputFile, "%s", magicSquareArray); 
while (!feof(inputFile)){ 
    fscanf(inputFile, "%s", magicSquareArray); 
} 

printf("%i\n", magicSquareArray[0]); 
int sideSize = magicSquareArray[0]; 
int squareSize = sideSize * sideSize; 
printf("%i\n", squareSize); 

fclose(inputFile); 

的文本文件:

3 
4,3,8 
9,5,1 
2,7,6 
+3

'同时){ 的fscanf(INPUTFILE, “%s” 时,magicSquareArray)(FEOF(INPUTFILE!); }' - >'while(1 == fscanf(inputFile,“%256s”,magicSquareArray);''或类似的东西,如果fscanf(...%s ...)的结果不使用'magicSquareArray' )!= 1' – chux

+2

你会想看看[**为什么while(!feof(file))总是错误的?**](http://stackoverflow.com/questions/5431941/why-is-while- –

+0

@chux谢谢,但遗憾的是我仍然得到55(ASCII代码为2):( –

回答

0

也许你想要的代码,如以下。 (但是,我认为以下列方式。 To prepare an array read the first number, To assign a numerical value to read into it.

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char *argv[]){ 
    FILE *inputFile; 
    char *input = argv[1]; 
    char magicSquareArray[257]; 
    int ch, len; 
    inputFile = fopen(input, "r"); 

    if (inputFile == 0){ 
     printf("Cannot open file for reading!\n"); 
     return -1; 
    } 
    len = 0; 
    while((ch = fgetc(inputFile)) != EOF && len < sizeof(magicSquareArray)-1){ 
     magicSquareArray[len++] = ch; 
    } 
    magicSquareArray[len] = 0; 
    fclose(inputFile); 

    printf("%c\n", magicSquareArray[0]); 
    int sideSize = atoi(magicSquareArray); 
    int squareSize = sideSize * sideSize; 
    printf("%i\n", squareSize); 

    return 0; 
} 
相关问题