我正在努力应付自己的运动。我必须在一行中输入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/