我正在努力应对自己的运动。我必须在单行中输入由空格分隔的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," ");
}
但它不起作用:/可能是阵列边界存在问题,但我不确定,我无法修复此错误。
答案 0 :(得分:0)
修复最后一次调用strtok()以接收参数++ split而不是NULL