을 얻는 방법을 캐릭터의 위치에서 알파벳에서는 C 언어?
문제
이 있는 빠른 방법을 검색어는 캐릭터의 위치는 영어 알파벳 C?
다음과 같습니다.
int position = get_position('g');
해결책
int position = 'g' - 'a' + 1;
C char
값환 int
값에서 자신의 ASCII 값이 있습니다.이 경우에, 'a'
과 같 97 'g'
103.이후에 알파벳이 연속적에 ASCII 문자 집합을,빼 'a'
에서 당신의 값을 제공합적인 위치입니다.추가 1 를 고려하는 경우 'a'
첫 번째가 될 수 있(대신 zeroth)위치에 놓습니다.
다른 팁
이와 함께 작동 EBCDIC 과는 대소문자를 구분합니다:
#include <ctype.h>
#include <stdio.h>
#include <string.h>
int getpos (char c)
{
int pos;
const char * alphabet = "abcdefghijklmnopqrstuvwxyz";
const char * found;
c = tolower ((unsigned char)c);
found = strchr (alphabet, c);
pos = found - alphabet;
if (!found)
pos = 0;
else if (pos == 26)
pos = 0;
else
pos++;
return pos;
}
int main ()
{
char tests[] = {'A', '%', 'a', 'z', 'M', 0};
char * c;
for (c = tests; *c; c++) {
printf ("%d\n", *c - 'a' + 1);
printf ("%d\n", getpos (*c));
}
return 0;
}
보 http://codepad.org/5u5uO5ZR 하려면 실행합니다.
당신은 또한 아마 계정에 상한/하한 경우입니다.내 expereince 에서 계산,1,종종 위험으로 이어질 수 있기 때문에 오프-하나씩 있다.엄지 손가락의 규칙으로 나는 항상 변환하여 1 기반의 색인 경우에만 사용자와 상호 작용,그리고 사용하 0 기반 계산,내부적으로 혼란을 피하기 위해.
int GetPosition(char c)
{
if (c >= 'a' && c <= 'z') {
return c - 'a';
}
else if (c >= 'A' && c <= 'Z') {
return c - 'A';
}
else {
// Indicate that it isn't a letter.
return -1;
}
}
제휴하지 않습니다 StackOverflow