-3
이것은 주어진 문자열을 검사하는 코드입니다 (identifier
또는 keyword
). 여기 코드는 다음과 같습니다주어진 문자열은 C++에서 유효한 식별자 또는 키워드입니다.
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
int main(){
int i = 0, flag = 0;
char a[10][10] = {"int", "float", "break", "long", "char", "for", "if", "switch", "else", "while"}, string[10];
//clrscr();
printf("Enter a string :");
gets(string);
/*----Checking whether the string is in array a[][]----*/
for(i = 0 ; i < 10; i++){
if((strcmp(a[i], string) == 0))
flag = 1;
}
/*----If it is in the array then it is a keyword----*/
if(flag == 1)
printf("\n%s is a keyword ", string);
/*----Otherwise check whether the string is an identifier----*/
else{
flag = 0;
/*----Checking the 1st character*----*/
if((string[0] == '_') || (isalpha(string[0]) != 0)){
/*---Checking rest of the characters*---*/
for(i = 1; string[i] != '\0'; i++)
if((isalnum(string[i]) == 0) && (string[i]!='_'))
flag = 1;
}
else
flag = 1;
if(flag == 0)
printf("\n%s is an identifier ", string);
else
printf("\n%s is neither a keyword nor an identifier ", string);
}
getch();
}
- 내가 더 쉽게이 코드를 수행 할. 그리고 char에 선언하지 않고 모든 키워드를 가져 오거나 식별 할 수 있습니까? 어떻게 할 수 있을까요?
S.O가 코드를 제공 할 수 있습니까?
이static const std::string keywords[] =
{
"char", "class",
"struct",
/* ... */
};
static const size_t keyword_quantity =
sizeof(keywords)/sizeof(keywords[0]);
std::string search_word;
cin >> search_word;
std::string const * const iterator =
std::find(&keywords[0], &keywords[keyword_quantity],
search_word);
if (iterator != &keywords[keyword_quantity])
{
cout << "Word is a keyword!\n";
}
std::string
데이터 유형을 쉽게 처리 텍스트 또는 문자열을 만드는 :
코드가보다 일관되게 형식화되고 들여 쓰기되면 논리를 따르기가 더 쉬울 수 있습니다. – Galik
[std :: string] (http://en.cppreference.com/w/cpp/string/basic_string)과 [std :: vector] (http : //en.cppreference)를 사용하면 훨씬 쉬울 것입니다. .com/w/cpp/container/vector). – Galik
개선 할 작업 코드가있는 경우 [SE 코드 검토] (https://codereview.stackexchange.com/)에서 더 잘 질문하십시오. – user0042