在命令參數中使用無效輸入或-help
標誌時,會出現段錯誤。它是Unix expand
實用程序的重新創建,它應該以類似的方式處理錯誤。使用無效輸入時出現Segfault
int main(int argc, char *argv[]){
char help1[]= "-help";
char help2[]= "--help";
int spaces; //number of spaces to replace tabs
if (argc==1){ //if only one argument in stack
//check if asking for help
if ((strcmp(argv[1], help1)==0) || (strcmp(argv[1], help2)==0))
printHelp();
else
printError(); //otherwise, print error message
//right number of tokens are provided, need to validate them
} else if (argc>=2){
spaces= atoi(argv[2]); //assign it to spaces
parse_file(spaces); //open the stream and pass on
}
return 0;
}
我printerror方法:
void printError(){
fprintf(stderr, "\nInvalid Input.\n");
fprintf(stderr, "The proper format is myexpand -[OPTION] [NUMBER OF SPACES]\n");
exit(1);
}
當我嘗試輸入無效或幫助的標誌,我得到一個段錯誤。爲什麼會這樣,因爲我在檢查第一面旗子是否有幫助?
有一段時間沒有做任何C,但不是索引0索引? strcmp(argv [1] ...應該是strcmp(argv [0]等等)? – Gazler 2011-02-10 20:07:53
不,argv [0]是你的可執行文件的名稱 – chris 2011-02-10 20:11:07