替换字符串中所有出现的字符的C程序

时间:2019-01-19 15:47:59

标签: c

我想编写一个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函数时,整个文本将转换为大写字母。 你能帮我吗?

谢谢

2 个答案:

答案 0 :(得分:1)

如果没有输入,您的代码可能会崩溃。

使用标准功能strstr()。为什么要重新发明轮子?您还可以提高代码的复杂性。看到此链接:

https://www.geeksforgeeks.org/frequency-substring-string/

答案 1 :(得分:-1)

我还没有发表评论的权限,所以我必须在这里回答你。

char变量使用8位编码,因此可以是256个值[0,255]。 在ASCII table中可以找到可打印的字符,您可以在其中看到字符a等于十进制值97

如果您将字符视为十进制值,我相信您可以自己弄清楚如何从a (97)转换为A (65),因此您将能够对任何字符执行相同的操作。