简单的C代码不起作用

时间:2014-09-28 13:18:10

标签: c arrays string

我编写了一个简单的代码来检查用户输入的字符串中是否存在给定字符,但它似乎无法正常工作。

#include<stdio.h>
#include<string.h>
int main()
{
    char a[20],b;
    int i,p=0,n;
    printf("Enter the string-");
    scanf("%s",a);
    printf("\nEnter the character-");
    scanf("%c",&b);
    n=strlen(a);
    for(i=0;i<n;i++)
    {
        if(a[i]==b)
        {
            printf("\ncharacter is present in string\n");
            p=1;
            break;
        }
    }
    if(p==0)
        printf("\nchracter is not present in string\n");
    return 0;
}

我得到的输出是:http://i58.tinypic.com/2gvnedt.png

我没有看到代码有什么问题。如果我更换&#34; scanf(&#34;%s&#34;,a);&#34;与&#34;得到(a);&#34;它工作正常。为什么呢?

帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:2)

在以下位置添加空格字符:

 scanf(" %c",&b);
        ^

使用第一个\n之后留在stdin中的尾随scanf字符。

因此\n保留在scanf正在读取的标准输入中。因此,当满足新的scanf时,它会扫描旧的\n字符。

为了消除这种影响,我在scanf中添加了一个空格字符,即我告诉它期望阅读\n或空格或\t,然后阅读%c }。