即使通过简单的方法,也无法在字符串和指定的char中找到空格

时间:2016-05-29 10:21:01

标签: c arrays comparison

我正在使用此方法在字符串中查找空格或指定的单词。 但这种方法不起作用。我已多次检查流量。

#include <stdio.h>
int main()
{
    char text[50], find;
    int i = 0, sp = 0;
    printf("Enter text: \n");
    scanf("%s", text);
    printf("Enter a char to find:\n");
    scanf("%c", &find);
    while ( text[i] != '\0') // to receive a value untill enter is pressed.
    {
        if (text[i] == find) // count if text[i] is the specified value.
            { sp++; }
        i++;
    }
    printf("%d", sp); // prints 0 always. how to fix this.
}

3 个答案:

答案 0 :(得分:0)

您不能使用scanf()来读取带空格的字符串。遇到空格后,scanf()退出。

改为使用fgets()

至于在字符串中查找单词,比较字符串使用strcmp()

侧面注意:

1)检查scanf()

的返回值

2)使用main()

的标准定义
int main(void) //if no command line arguments.

答案 1 :(得分:0)

代码中的find始终分配有\n或您在扫描字符串text时输入的新行字符。请在{{1}中留出空格} scanf的声明:

find

为什么要留出空间?

通过提供空格,编译器会忽略先前scanf(" %c",&find)

中的'\n'字符
  

注意scanf在遇到空格时结束扫描,例如scanf("%s",string)'\n''\0',但要考虑空格,请尝试   使用此'\t'

答案 2 :(得分:0)

我找到了解决方案:

scanf("%[^\n]", fullName);

工作正常。接收整行