编辑:
问题:
编写程序以查找给定单词(即短字符串)出现在a中的次数 句子(即长串!)。从标准输入读取数据。第一行是一个单词,即 接下来是第二行的一般文字。
示例输入:
the
the cat sat on the mat
示例输出:
2
之前我尝试过使用scanf,但它无法读取整个句子,只检查第一个单词并返回1作为答案,而不是2
代码是:
#include <stdio.h>
#include <string.h>
int main()
{
char s[200000], c[20], v = ' ';
int i = 0, j, f, n = 0;
gets(c);
gets(s);
while (i < strlen(s))
{
j = 0;
f = 0;
while (j < strlen(c))
{
if (s[i++] != c[j++])
{
f = 1;
i--;
break;
}
}
if ((f == 0) && (i == strlen(s) || s[i] == ' ') && (v == ' '))
{
n++;
v = s[i++];
}
printf("%d\n", n);
return 0;
}
}
答案 0 :(得分:0)
这是您尝试实施的程序的解决方案(answer)。这也提供了获取字符串的正确方法。
希望在任何方面都有这个帮助!
答案 1 :(得分:0)
替代在此代码中使用gets(c)和gets(s)的替代方法是什么?
使用以下
代替char c[20]; gets(c);
// Read a line of text
char c[20+1]; // 1 more for the \n
if (fgets(c, sizeof c, stdin) == NULL) {
// Handle EOF or input error in some fashion
puts("Unexpected EOF or input error");
return 1;
}
取消'\n'
Removing trailing newline character from fgets() input
// lop off a potential trailing '\n'.
c[strcspn(c, "\n")] = '\0';
其余代码可能还有其他问题。