sscanf(input,"%d%n",&number,&nrOfDigits)
을 사용하면 number
에 정수 값을 읽고 nrOfDigits
에 숫자의 일부가 아닌 첫 번째 문자의 위치를 저장할 수 있습니다. 이 정보를 사용하여 수행 할 작업을 결정할 수 있습니다. nrOfDigits < 8
은 입력이 8 자보다 짧거나 4 자리 미만이 포함되었음을 나타냅니다. 아래 사용법의 샘플 코드를 참조하십시오.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int isLetter(char input[]){
int nrOfDigits=0;
int number;
int scannedElems = sscanf(input,"%d%n",&number,&nrOfDigits);
if (scannedElems == 0) {// number could not be read--
printf ("No number read.\n");
return 0;
}
else {
char c = input[nrOfDigits];
int isAlpha = isalpha(c);
printf("input %s leads to number %d with %d digit(s); first characer after the digits is '%c', (isalpha=%d)\n", input, number, nrOfDigits, c, isAlpha);
return number;
}
}
int main(){
isLetter("4fpdpfsg"); // input 4fpdpfsg leads to number 4 with 1 digit(s); first characer after the digits is 'f', (isalpha=1)
isLetter("afpdpfsg"); // No number read.
isLetter("12345678"); // input 12345678 leads to number 12345678 with 8 digit(s); first characer after the digits is '�', (isalpha=0)
return 0;
}
은 BTW : 당신은뿐만 아니라 strtoul
와 유사한 논리를 구현할 수 있습니다.
'isalpha' 및 유사한 기능 계열을 사용해보십시오. –
코드에 어떤 문제가 있습니까? 실행됩니까? 잘못된 결과가 나옵니까? –
실행하지만 예를 들어 입력은 올바른 8 "숫자"로 인식 할 수 없습니다. 12345678과 같은 숫자가 없지만 1234abcd가 1234를 감지하면 입력 오류 메시지가 표시됩니다. – Alexander