0
문제가 있습니다. 내 프로그램에서 문자열을 나누고 변수의 각 하위 문자열을 저장 한 다음 정수로 변환하여 계산을 할 수 있습니다.문자열을 분리하고 Int로 변환
char line[] = "500,600";
char line[] = "-500,-600";
char line[] = "500,-600";
하지만
char line[] = "-500,600";
을하려고 할 때 내가 이상한 출력을 가지고 :
을 입력 값 예를 들어 때
#include <stdio.h>
#include<string.h>
int main()
{
char *token;
char *token2;
char line[] = "-500,600";
char *search = ",";
printf("%s\n",line);
token = strtok(line, search);
printf("token1: %s\n",token);
token2 = strtok(NULL, search);
printf("token2: %s\n",token2);
int n = toInt(token);
int m = toInt(token2);
printf("String = %s\nInteger = %d\n", token, n);
printf("String = %s\nInteger = %d\n", token2, m);
int b = n*3;
int c = m*2;
printf("%d\n",b);
printf("%d",c);
return 0;
}
int toInt(char a[]) {
int c, sign, offset, n;
if (a[0] == '-') { // Handle negative integers
sign = -1;
}
if (sign == -1) { // Set starting position to convert
offset = 1;
}
else {
offset = 0;
}
n = 0;
for (c = offset; a[c] != '\0'; c++) {
n = n * 10 + a[c] - '0';
}
if (sign == -1) {
n = -n;
}
return n;
}
그것은 잘 작동 toInt 기능에 문제가있을 수 있지만 잘못되었다고 말할 수는 없습니다. 어쩌면 당신의 누군가가 아이디어를 가지고 있을지도 모릅니다.
나는 atoi 함수를 사용하여 더 간단하게 만들 수 있다는 것을 알고 있지만, 여기에 무엇이 잘못된 것인지 관심이 있습니다.
디버거로 코드를 밟았을 때 무엇을 보았습니까? – pm100
'sign'은'int sign = 0; '처럼 초기화 될 필요가 있습니다. 또한 그것을 사용하기 전에'int toInt (char a []);'프로토 타입을 넣으십시오. – BLUEPIXY
'a [0]! = '-'' 인 경우, 다음으로'sign'을 체크하면 초기화되지 않은 변수에서 읽습니다. 이것은 정의되지 않은 행동입니다. – KABoissonneault