나는 나의 운동을 극복하려고 노력하고있다. 나는 한 줄에 정수로 구분 된 n (10^6까지) 정수를 입력하고 합쳐야한다. 예 : 나는 문자 배열 등의 해당 라인을 판독하기로Sigsegv 오류, 뭐가 잘못 되었나요?
int n;
long long int sum;
scanf("%d\n", &n);
while(n--){
scanf(" %d", &value);
suma+= value;
}
0 1 541 10 54 100,000,000 ...
난 scanf와 시도했지만 (알고리즘 만 초이기 제한)는 많은 시간을 소요 그런 다음 공백을 구분 기호로 사용하여 분할합니다.
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," ");
}
그러나이 작동하지 않습니다/아마 배열의 경계에 문제가있는 것입니다,하지만 난 잘 모르겠어요 내가이 오류를 복구 할 수 없습니다.
충돌을 일으키기 위해 어떤 입력을 제공합니까? '수마 '란 무엇입니까? – NPE
'char tab [n];을 수행하기 전에'n> 0'을 검사하면 버퍼 오버 플로우를 일으키는 다음 scanf에 대한 보호가 없습니다. 'n'에 '0'또는 '1'을 입력하면 문제가 설명됩니다. –
첫 번째 숫자로 'n'이 처음으로 스캔 된 것은 무엇입니까? 총 문자열 길이로 * 사용하고 있습니다. – usr2564301