while(1){
//Command prompt
char *command;
printf("%s>",current_working_directory);
scanf("%s",command);<--seg faults after input has been received.
printf("\ncommand:%s\n",command);
}
いくつかの異なるエラーが発生していますが、実際には再現できないようです (この時点での segfault を除いて)。このコードは、約 10 分前には問題なく動作していましたが、printf コマンドを無限ループさせ、現在は上記の行でエラーを検出しています。私が変更scanf(">%s",command);
したのは、現在のものだけです。コマンド変数を配列に変更すると機能します。明らかにこれは、ストレージがそのために確保されているためです。
- 私は誰かにポインタをmallocする必要があると言ったことで起訴されました*(しかし、それは通常、配列にするなどの問題を解決するようです)
- 私が入力しているコマンドは "magic" (5 文字) であるため、異常なスタック オーバーフローは発生しません。
- Mac OS X 10.6 で最新バージョンの xCode (非 OS4) と標準の gcc を実行しています。
- これは私がプログラムをコンパイルする方法です:
gcc --std=c99 -W sfs.c
何が起こっているのかを理解しようとしているだけです。これは私が二度と見る必要のない学校のプロジェクトのためのものなので、上司を泣かせる初心者向けの作業をコード化するだけです:)それに対するいくつかの修正、およびそれに対する何らかの修正がある場合、その修正が機能する理由。