1

基本上我要做的是,当用户输入一个字符串时,我的代码将一个一个地检查字符,看看它们是否属于一个数组。

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]);
        }
    }
}

我真的很难弄清楚这段代码有什么问题,由于某种原因,它总是以不存在的类别结束。任何建议或帮助都非常感谢,在此先感谢。

4

1 回答 1

0

代码似乎对我有用。我确实编辑了问题中的代码,我可能无意中删除了问题。请随时重新编辑并发布原始代码,我似乎无法回滚我的编辑。

在职的:

#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]);
        }
    }
}

我的补充,2 个结语和}一个结语)if

原始代码:

#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]);}
于 2013-06-16T00:34:16.260 回答