0

さて、何が起こっているのかを合理的に把握するために...

csvテーブルから次のような2次元配列にデータを読み込んでいます。

tableFile = fopen(argv[4], "r");
char tableArray[30][50][256];
char c;
int i=0, j=0, k=0;
while(c != EOF){

    c = fgetc(tableFile);

    switch(c)
    {
        case ',':
            tableArray[i][j++][k]='\0';
            k=0;
            break;
        case '\n':
            tableArray[i++][j][k]='\0';
            j=0;
            k=0;
            break;
        default:
            tableArray[i][j][k++] = c;
            break;
    }
} //end file transfer

fclose(tableFile);

ファイルを読み取った後、私は無関係な大量のジャンクを実行しますが、問題は、上記のテーブルから取得したデータから何かを印刷しようとすると、printfがおかしくなってしまうことです。

たとえば、私が次のようなことを言ってみるとしたら。

 char *string = malloc(256*sizeof(char));
 string = tableArray[9][46];
 printf("What the heck is going on with this string %s ", string);

%sの後にそのスペースが表示されますか?それは実際には「W」を上書きし、printfは「この強力なHELLOで一体何が起こっているのか」のようなものを表示します

何か案は?!?!

ありがとう!

4

4 に答える 4

4

読み込み行は。で終わります'\r''\r'あなたはあなたの中で特別にケースを扱うべきswitchです。

于 2012-10-02T14:29:25.237 に答える
2

文字列はおそらく。のようなもの"HELLO\r "です。キャリッジリターンは、カーソルを行の先頭に移動します。

于 2012-10-02T14:30:56.967 に答える
0

ファイルにはCR('\r')文字が含まれており、それらを部分文字列の最後に配置しています。

于 2012-10-02T14:30:43.270 に答える
0

入力ファイルの行はどのように終了しますか?

Windowsの行末変換を使用している場合、つまり、スイッチでも\r\nスキップする必要があり\rます。

于 2012-10-02T14:32:04.267 に答える