c - 如何将字符串c程序中的每个单词大写

标签 c string

我刚刚编写了一个关于字符串的程序。我的问题是如何在 c 中字符串的偶数位置处大写单词。我的逻辑是一个词甚至可以整除2等于0。任何人都可以帮助我,非常感谢。这是我的代码:

#include <stdio.h>

void upper_string(char []);

int main()
{
    char string[100];
    printf("Enter a string to convert it into upper case\n");
    gets(string);
    upper_string(string);
    printf("The string in upper case: %s\n", string);
    return 0;
}

void upper_string(char s[]) {
    int c = 0;
    while (s[c] != '\0') {
        if (s[c] >= 'a' && s[c] <= 'z')
        {
            s[c] = s[c] - 32;
        }
        c++;
    }
}

最佳答案

您需要使用空格计数器来跟踪单词。

如果空格计数器为奇数,则将字母大写,直到到达下一个单词。

示例:

void upper_string(char s[]) {
   int c = 0;
   int spaceCounter = 0; //First word not to be capitalized

   while (s[c] != '\0')
   {
     if ((spaceCounter %2 == 1) && s[c] >= 'a' && s[c] <= 'z')
     {
        s[c] = s[c] - 32; // You can use toupper function for the same.
     }
     else if(s[c] == ' ')
     {
        spaceCounter++; //Reached the next word
     }
     c++;
  }
}

关于c - 如何将字符串c程序中的每个单词大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52873497/

相关文章:

c - 该循环输出始终相同的数字(iPad c 编译器)

c - 如何确定环绕声音频信号的 channel 映射( channel 到轨道分配)

C 变量传输返回错误

c# - 为什么 File.ReadAllBytes 结果与使用 File.ReadAllText 时不同?

windows - 在 CMD 中用新行替换所有空格

c - 如何在没有空终止的情况下将十六进制值分配给 char 类型?

c++ - ReadDirectoryChangesW 在复制或创建文件时不捕获 FILE_ACTION_ADDED

c++ - 如何在 C++ 中将字符串转换为 vector ?

string - 如何在 Windows 批处理文件中使用 FOR 获取文本文件中的路径变量?

c# - 将字符串数组转换为 C# 中的串联字符串