我可能完全是這樣做的,但考慮到這將是個人使用,如果不是那麼高效就沒關係。不使用自變量時出現分段錯誤(核心轉儲)
當作爲./todo -r
運行時,它工作。
當作爲./todo -a
運行時,它工作。
當爲./todo
跑了,這讓我segmentation fault (core dumped)
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[]) {
if(argc < 1) {
printf("Not enough variables.");
}
if(strcmp("-r",argv[1])==0) {
printf("\n");
system("cat .todo");
printf("\n");
}
if(strcmp("-a",argv[1])==0) {
char str[BUFSIZ];
FILE *f;
f = fopen(".todo","a");
printf("\n\nTODO list\n\n");
for(;;) {
printf("~ ");
fgets(str,256,stdin);
if(strcmp(str,"\n")==0) {
fclose(f);
printf("\n");
break;
}
fprintf(f,str);
}
return 0;
}
}
'如果(ARGC <1)' - 應該是'如果(ARGC <2)'。 –
還需要檢查fopen的返回值爲0. –
提示:將代碼粘貼到SO時,請先移除標籤。正如你所看到的,在問題代碼中的縮進不是很正確...... – hyde