基本上我要做的是,当用户输入一个字符串时,我的代码将一个一个地检查字符,看看它们是否属于一个数组。
For instance i have an array:
char example[] = { 'a', 'b', 'c', 'd', 'e' };
假设用户输入了一个字符串“示例字符串”现在我想单独检查字符串中的每个字符是否存在于给定数组中。所以第一个字母“e”显然在数组中,而字母“x”在给定数组中不存在。到目前为止,我正在尝试使用循环和 memchr,但由于某种原因它无法正常工作,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char array[] = { 'a', 'b', 'c', 'd', 'e' };
char input[40]; /*Reserved for the string*/
int lengthofstring,i;
scanf("%[^\n]s",input); /*This enables spaces in the input, and let's say
the string in this case is "example"*/
lengthofstring=strlen(input);
for (i=0;i<lengthofstring;i++){
if (memchr(array,input[i],sizeof(array)){
/* Now in this example input[i]="e", when i=0 and sizeof(array)=5*/
printf("The letter %c does exist\n",input[i]);
}
else {
printf("The letter %c does NOT exist\n",input[i]);
}
}
}
我真的很难弄清楚这段代码有什么问题,由于某种原因,它总是以不存在的类别结束。任何建议或帮助都非常感谢,在此先感谢。