我正在使用此方法在字符串中查找空格或指定的单词。 但这种方法不起作用。我已多次检查流量。
#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.
}
答案 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);
工作正常。接收整行