当我运行此代码时,出现错误分段错误(核心转储)
#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 );
一切都很好