2016-09-27 13 views
0

私は、ここで私は.txtファイルからデータを読んでいる、C言語でプログラムを書いている時に開始され、私の目標は、に.txtファイルから各要素を置くことですアレイ。プログラムをコンパイルして実行すると、50,55、および0の値が返されます。これらはASCII値です(要素がASCIIコードとして保存されている理由はわかりませんが、現在は大丈夫です).2、7、0(.txtファイルの最後に達してから何も初期化されていないことを意味します。なぜは、12の要素

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); 

は、テキストファイル...私のプログラムは??

最初から.txtファイルの読み込みではありません。

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

'間){ 関数fscanf(で、inputFile、 "%sの"、magicSquareArray)(FEOF(で、inputFile!)。 '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; 
} 
関連する問題