標準原型對於main()
應該看起來像這樣:
int main(int argc,char * argv []);
你只用一個參數argv
來聲明你的main()
。但系統傳遞了一系列參數作爲第一個參數。
當您指定單個參數(文件file.txt
)時,argc
設置爲1.但您的程序嘗試使用整數1作爲char **
。這給總線錯誤。
這是你的程序的編輯版本的作品:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *file;
if (argc != 2)
{
fprintf(stderr, "Usage: myprogram <filename>\n");
exit(1);
}
file = fopen(argv[1], "r");
if (file == NULL) {
fprintf(stderr, "Cannot open file.\n");
exit(2);
}
exit(0); // status 0 to signal no error
}
變化:
我加#include <stdlib.h>
得到的exit()
聲明。
我檢查參數的數量,並打印Usage:字符串,如果它不正確。
我將錯誤消息打印到stderr
而不是標準輸出。
我將return 1
更改爲exit(0)
以明確程序正在退出成功。
不,我在打印出arg [0]時也遇到了麻煩。 –
所以,改變你的主要類型爲int main(int argc,char * argv []) – RolandXu
好的,謝謝!完美工作!改爲您的建議,並使用argv [1],它的工作。在這種情況下, –