0

私はこれを完全に間違った方法で行っている可能性がありますが、これが個人的な使用であることを考えると、それほど効率的でなくても問題ありません。

として実行する./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;
    }
}
4

3 に答える 3

1

他の人が指摘したように、必要argc < 2ではなくargc < 1.

ifさらに、残りの実行を停止するために、おそらく から戻りたいと思うでしょう:

if(argc < 2) {
  printf("Not enough variables.");
  return /* some appropriate value here */;
}
于 2013-10-21T20:11:20.300 に答える