0

私はfgetsに奇妙な問題を抱えています。

コマンドが $test.txt のようなものである場合、fgets は問題なく完全に受信します。コマンドが $ls -l > test.txt の場合、結果は次のようになります。

Buffer: ls -l > test.t

xt を切断すると、セグメンテーション違反が発生します。

これは私のコードです:

void ReadCommand(char *buffer, size_t len)
{
    if(fgets(buffer, len, stdin) != NULL)
        buffer[strlen(buffer) - 1] = '\0';
}

このメソッドを呼び出すコード:

int main(int argc, char *argv[])
{
        ...
    char cmd_line[MAX_ARG_LEN]; //MAX_ARG_LEN = 16
    size_t len = sizeof(cmd_line);

    /* Read Command Line */
    ReadCommand(cmd_line, len);
        ...

}

ピリオドは前後に何かがあることを意味します。しかし、それらはバッファや関数とは何の関係もありません。

なぜそれが起こるのかわかりません。あなたの助けは大歓迎です!

4

0 に答える 0