문제

어떻게 C 핸들 간에 변환의 정수와 특성을까?말 당신이 선언하는 정수 변수 사용자에게 묻는 번호 하지만 그들은 입력 문자열을 대신 합니다.어떤 일이 일어날까요?

도움이 되었습니까?

해결책

사용자 입력은 ATOI 또는 다른 변환 기능을 사용하여 Int로 변환 해야하는 문자열로 취급됩니다. 문자열이 문자 나 다른 비 언어 문자가 포함되어 있기 때문에 문자열을 숫자로 인터 트리트 할 수없는 경우 Atoi가 0을 반환합니다.

MSDN의 ATOI 문서에서 좀 더 읽을 수 있습니다. http://msdn.microsoft.com/en-us/library/yd5xkb5c(vs.80).aspx

다른 팁

음? 당신은 항상 문자열을 입력합니다. 그런 다음 다양한 오류 (오버플로, 부정확 한 숯 등)를 처리하는 다양한 방법 (다시 요청, 기본값을 취하는 등) 으로이 문자열을 숫자로 변환합니다.

주목해야 할 또 다른 점은 C에서 문자와 정수가 어느 정도 "호환"된다는 것입니다. 모든 캐릭터는 int에 할당 할 수 있습니다. 반대도 작동하지만 정수 값이 숯에 맞지 않으면 정보가 손실됩니다.

char foo = 'a'; // The ascii value representation for lower-case 'a' is 97
int bar = foo; // bar now contains the value 97 
bar = 255; // 255 is 0x000000ff in hexadecimal
foo = bar; // foo now contains -1 (0xff) 
unsigned char foo2 = foo; // foo now contains 255 (0xff)

으로 다른 사람들이 지적,데이터는 일반적으로 입력된 문자열에만 문제는 어떤 기능을 사용한 일을 읽고 있습니다.를 사용하는 경우에는 GUI 기능을 수 있습니다 이미격으로 전환과 정수와 오류 보고 그래서는 적절한 방법으로.와 작업하는 경우에는 표준 C,그것은 일반적으로 쉽게 읽을 가치로 문자열은(아마도 fgets() 한 다음 변환합니다.지 atoi() 사용할 수 있습니다,그것은 거의 최고의 선택문제입니다 여부를 결정하기 전환에 성공했(및 생산 제기 때문에 사용자가 입력한 정당한 표현의 영)또는 아닙니다.

일반적으로,사용 strtol() 또 하나의 그것의 친척(strtoul(), strtoll(), strtoull());로 변환하기 위한 부동 소수점 숫자,사용 strtod() 또는 이와 유사한 기능입니다.의 장점은 정수로 전환되는 루틴은 다음과 같습니다:

  • 선택적인 기초 선택(예를 들어,기본 10,또는 기본 10-육 또는 기본 8-진수,또는 위의 모든 표준을 사용하여 C 규칙(007 에 대한 진수,0x07 육,7 개 소수).
  • 선택 사항 오류가 검출(곳을 알면 전환 중지됨).

는 장소가 많은 이들의 기능 사양(할 때 나는 보지 않는 나의 복사본을 실 C 기준)가 POSIX 웹사이트(을 포함하는 C99 능).그것은 유닉스 중심이 아닌 윈도우 중심이다.

프로그램이 충돌하고 ATOI 기능을 호출해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top