您可以使用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