分段错误核心转储到c中

分段错误核心转储到c中

当我运行此代码时,出现错误分段错误(核心转储)

#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 );

一切都很好

相关内容