このコードを実行するとエラーが発生します。分割エラー(コアダンプ)
#include<stdio.h>
int main(int argc, char *argv[]) {
int i = 0;
printf("\n cmdline arg counts = %s ", argc);
printf("\n exec name = %s ", argv[0]);
for (i=1; i<argc; i++) {
printf("\n arg %d = %s" , i, argv[i]);
}
return 0;
}
この問題を解決する方法を教えてください。私は主張を伝えています。
答え1
あなたの問題は次のとおりです
printf("\ncmdline arg counts = %s ",argc );
%s(%dではなく)形式を使用してargcを印刷するので、argcを文字列へのポインタとして解釈します。これにより、printfは保護されたスペースから文字列を読み取ろうとします。行を次に変更します。
printf("\ncmdline arg counts = %d ",argc );
大丈夫です。