我正在努力应付自己的运动。我必须在一行中输入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数组,然后使用空格作为定界符进行分割。

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," ");
    }


但这是行不通的://数组边界可能存在问题,但是我不确定,并且无法修复此错误。

最佳答案

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

关于c - sigsegv错误,怎么了?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26313262/

10-12 16:49
查看更多