[英]Segmentation fault when parsing command line arguments
我遇到了分段錯誤,無法隔離錯誤的來源。 我認為出於某種原因argv和argc無法獲取值,但是我無法弄清楚原因。
這是我的代碼的第一部分。
int main(int argc, char **argv)
{
int i;
int numArrays = 0;
int test = 0;
int opt = 0;
printf ("Parsing....\n"); // This line gets printed
printf(argv); // this one doesn't even if being flushed immediately after
printf(argc); // when the previous line is deleted, this line also won't print
fflush(stdout);
opt = getopt(argc, argv, optString); // defined as optString = "qmc";
while (opt != -1) {
printf (opt);
switch (opt) {
//prevents program from printing to a file
case 'q':
tofile = 1;
break;
// max size of the prime numbers
case 'm':
maxPrime = atoi(optarg);
break;
case 'c':
numProcs = atoi(optarg);
break;
default:
break;
}
}
我試圖弄清楚發生了什么,但是我看不到argc和argv為什么沒有獲取值。 我之前使用了完全相同的解析代碼,並且運行良好。 通常,分段錯誤非常容易(訪問您不應該訪問的內存位置),但是沒有理由我不應該訪問命令行參數。
您對如何使用printf
感到困惑。 您當前正在做的事情是大禁忌:
printf(argv);
printf(argc);
該函數需要一個const char*
字符串,該字符串指定輸出和可選變量參數列表的格式。 您正在傳遞一個不是字符串的雙指針和一個甚至不是指針的整數!
您想要這樣的東西:
printf( "Number of arguments: %d\n", argc );
for( int i = 0; i < argc; i++ ) {
printf( "Arg %d: %s\n", i, argv[i] );
}
在此處閱讀有關printf
信息: http : //en.cppreference.com/w/c/io/fprintf
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.