我想编写一个C程序来搜索给定字符串中所有出现的单词,然后 用大写字母写出所有出现的单词。
示例
输入
输入字符串:早上好。祝你有美好的一天。
输出 在位置1发现“好”一词 在位置22找到了“好”一词
早上好。祝你有美好的一天。
我写了以下代码
#include <stdio.h>
#include <string.h>
void main()
{
char str[1000], pat[20] = "good";
int i = 0, j, mal = 0, flag = 0;
printf("Enter the string :");
gets(str);
while (str[i] != '\0')
{
if (str[i] == pat[0])
{
j = 1;
//if next character of string and pat same
while(pat[j] != '\0' && str[j + i] != '\0' && pat[j] == str[j + i])
{
j++;
flag = 1;
}
if (pat[j] == '\0')
{
mal += 1;
printf("\n The word was found at location %d.\n" , i + 1);
}
}
i++;
if (flag == 0)
{
if (str[j + i] == '\0')
printf(" The word was not found ") ;
}
}
printf("The word was found a total of %d times", mal);
}
如何将“好”一词转换为大写字母?
当我使用C库ctype.h中的toupper函数时,整个文本将转换为大写字母。 你能帮我吗?
谢谢
答案 0 :(得分:1)
如果没有输入,您的代码可能会崩溃。
使用标准功能strstr()
。为什么要重新发明轮子?您还可以提高代码的复杂性。看到此链接:
答案 1 :(得分:-1)
我还没有发表评论的权限,所以我必须在这里回答你。
char
变量使用8位编码,因此可以是256个值[0,255]。
在ASCII table中可以找到可打印的字符,您可以在其中看到字符a
等于十进制值97
。
如果您将字符视为十进制值,我相信您可以自己弄清楚如何从a (97)
转换为A (65)
,因此您将能够对任何字符执行相同的操作。