Sigsegv错误,什么错?

时间:2014-10-11 09:42:47

标签: c

我正在努力应对自己的运动。我必须在单行中输入由空格分隔的n(最多10 ^ 6)个整数并求它们。 对于例如0 1 541 10 54 100000000 ......

我尝试过scanf,但需要花费很多时间(此算法的限制仅为1秒):

int n;
long long int sum;
scanf("%d\n", &n);
          while(n--){
               scanf(" %d", &value);
               suma+= value;
          }

我决定将该行读作char数组,然后使用space作为分隔符进行拆分。

int n;
long long int sum;
scanf("%d\n", &n);
char tab[n];
scanf("%[^\n]s", tab);
char* split=strtok(tab," ");

    while(split != NULL){
         suma += atoi(split);
         split=strtok(NULL," ");
    }

但它不起作用:/可能是阵列边界存在问题,但我不确定,我无法修复此错误。

1 个答案:

答案 0 :(得分:0)

修复最后一次调用strtok()以接收参数++ split而不是NULL