0

リダイレクトによる入力を使用しています。文字列から整数に数値を格納しようとしています。

最初の数字は 1989 ですが、格納されるのは '1' だけです。strtol を間違って使用していますか?

テーブルは構造体の配列です

value は整数の配列です。

//(*row, i, j) = 0

while((c = fgetc(stdin)) != EOF)
{
    if (c != ' ' && c != '\n')
    {
        str[i] = c;
        i++;
    }

    else if (c == ' ')
    {
        str[i] = '\0';
        i = 0;
        table[*row].value[j] = strtol(str, NULL, strlen(str));

このコードは機能し、1989 年に読み取った後に else if に入ります...しかし、何らかの理由で strtol は「1989」ではなく「1」のみを格納しています。

4

1 に答える 1

3

はい、使い方が間違っています。最後の引数は、解析する数値の基数です。通常の 10 進数の場合は10. たとえば、このリファレンスを参照してください。

于 2013-09-20T06:48:51.607 に答える