命令行参数分段错误

时间:2015-10-22 19:29:26

标签: command-line segmentation-fault arguments parameter-passing

int main(int argc, const char * argv[]) {

    int first_arg, second_arg; 

    if( argv[1] == NULL || argv[2] == NULL ){
        printf("no arguments! ");
        exit(0);
    }
    else{
        printf("%s  %s \n", argv[1], argv[2] );
        sscanf (argv[1], "%d", &first_arg);
        sscanf (argv[2], "%d", &second_arg);
        printf("%d  %d", first_arg, second_arg);
    }
}

我试图获取int参数。程序适用于少量参数但是当我写大数字时它会给出分段错误。我试图用gdb修复它,它说:

warning: `/private/var/tmp/libplatform/libplatform-24.90.1~2/libplatform.build/libsystem_platform.build/Objects-normal/x86_64/init.o': can't open to read symbols: No such file or directory.
no arguments! [Inferior 1 (process 1275) exited normally]

适用于" 100和1"," 200和1"但是" 300和1"给出了分段错误。也有效" 1和1000"但是" 10和1000"再次给出细分。 它只打印第一个printf in else

0 个答案:

没有答案