私は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);
...
}
ピリオドは前後に何かがあることを意味します。しかし、それらはバッファや関数とは何の関係もありません。
なぜそれが起こるのかわかりません。あなたの助けは大歓迎です!