繁体   English   中英

如何将数组中的特定字母大写

How to capitalize specific letter in an array

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在努力完成我在 C 课上的第一个家庭作业。 目标是对于一个数组,找到所有小写的 E 并将它们转换为大写的 E。

在此处和书中搜索了数小时后,我尝试了一些变体,但无济于事。 为新手问题道歉,因为我对此很陌生。

我不允许使用除 printf 和 random_letter 之外的任何函数,所以我发现的大部分内容都不适用。

这是测试程序中的代码

include <stdio.h>
void capitalize_e(char s[]);

int main(int argc, char *argv[]) {
    char s[] = "The elephant in the room.";

   printf("String before capitalizing e's: %s\n", s);
   capitalize_e(s);

   printf("String after capitalizing e's: %s\n", s);
}

这是我最近的尝试。

#include <stdio.h>
 void capitalize_e(char s[], int size) {
  int i;
  char A = "e";
  char B = "E";
  for (i=0;i<size; i++) {
    if(s[i]==A)
      s[i]==B;
  }
3 个回复
  • 您需要知道""之间呈现的字符串文字''之间呈现的字符之间的区别。

  • s[i]==B其中双重相等运算符是错误的。 它用于判断条件是否为真。

  • void capitalize_e(char s[], int size)其中应删除第二个形参。 并且,应该应用for (i=0; s[i] != '\\0' ; i++)

我会将您的代码重写为类似于以下内容:

void capitalize_e(char s[], char lowerCaseChar) {
    for (size_t i = 0; s[i] ; i++) {
        if (s[i] == lowerCaseChar)
            s[i] ^= ' ';
    }
}

我会写一个通用函数来用另一个字符替换一个字符......然后用它来用'E'替换'e'。

例如 :-

char* replace_all(char* str, char target, char replacement) {
    char* s = str;
    while(*s != 0)  {
        if(*s == target) *s = replacement;
        s++;
    }
    return str;
}

int main() {
    char example[] = "The elephant in the room.";
    printf("%s", replace_all(example,'e', 'E'));
}

你提到了“random_letter”,但没有在你的问题中明确谈论它。 我假设,然后您可以构建如下内容。

char* replace_all(char* str, char target, char replacement) {
    char* s = str;
    while(*s != 0)  {
        if(*s == target) *s = replacement;
        s++;
    }
    return str;
}

char capitalize(char c) {
    if(c >= 'a' && c <= 'z') return 'A' + (c -'a');
    return c;
}


int main() {
    char example[] = "The elephant in the room.";
    char letter = random_letter();
    printf("%s", replace_all(example,letter, capitalize(letter)));
}

现在您已经构建了两个可以重用于其他用途的有用函数,而不是一个非常显式的函数,称为 capitalize_e

我会建议检查 ASCII 表中字符的 ASCII 值。 如果你注意,你会看到大写字母会从十进制值 65 开始。例如:A = 65,B = 66,C = 67 等等。 从 97 开始,字母是小写的。 因此,我会检查每个字符的十进制值并比较其范围是否大于或等于 97,如果为真则替换为 32。 您还可以将条件设​​置为 >=97 && <=122。

为了不破坏您的学习体验,我没有提供任何代码,并且应该相当直接地遵循并相应地解决难题。

没关系,我只是在被否决后添加了一个简短的代码片段。

int main() {
   char myArray[] = "Hello World";

   for(int i = 0; i < sizeof(myArray); i++) {
     int decimalValueOfChar = myArray[i];
     if(decimalValueOfChar >= 97 && decimalValueOfChar <= 122) {
        decimalValueOfChar = decimalValueOfChar - 32;
        myArray[i] = decimalValueOfChar;
     } 
   }
   printf("%s", myArray);
   return 0;
}
1 如何将数组中每个名称的第一个字母大写?

这是问题: 创建一个函数,该函数接受一个名称数组并返回一个数组,其中每个名称的第一个字母是大写的。 例子 capMe(["mavis", "senaida", "letty"]) ➞ ["Mavis", "Senaida", "Letty"] 我为回答这个问题而写的代码: 如您所见,它打 ...

2021-07-13 01:37:04 3 72   c++
2 将每个字母大写为元音数组

我试图将每个字母大写为元音数组。 我有: 如果vowels包含字符,那么我会大写。 我做了: 但它返回["a", "b", "c"] 。 我在这里做错了什么? ...

4 如何在JavaScript中将每个单词的首字母大写? [重复]

这个问题已经在这里有了答案: 尝试大写字符串数组中的第一个字符,为什么这不起作用? 11个答案 我一直在尝试最后几个小时,以了解为什么我的代码无法正常运行。 我的代码不是只大写数组中每个项目的首字母,而是大写数组中的所有字母。 ...

5 如何将C中数组中每个单词的第一个字母大写

我试图创建一个简单的程序,将一个用户输入的句子存储在一个最多80个字符的数组中,然后将句子中的每个单词大写。 我想我正在走上正轨,但是当我运行程序时,只会显示句子的第一个单词。 我有一种感觉,它只是打印数组中的第一个单词,因为scanf之后的第一个if语句,但我不完全确定。 任何帮助 ...

2013-03-30 23:50:39 3 3210   c/ arrays
7 如何大写第一个和第三个字母?

我想在我的文本区域使用大写的第一个字母和第三个字母。 我只能将首字母大写,然后将每个接下来的字母和单词都转换为小写。 如果有解决此问题的方法,请告诉我。 我正在使用AngularJS。 这就是我正在尝试做的事情。 这仅适用于第一个字母,它将转换为大写字母,然后将另 ...

9 如何大写第一个字母剃刀

我是 MVC 的新手,还没有在网上找到解决方案。 我有 html 为: 我希望 address1 的所有第一个字母都是大写字母,例如 Some Road 而不是 something road。 现在我有一个类客户端和属性 Address1 并使用 EF 获取地址如下: 希望这是有道理的。 ...

10 如何在这个程序中首字母大写

我写了大部分内容。 我只是无法弄清楚如何大写每行的第一个字母。 问题是: 编写一个程序,检查文本文件中的几个格式和标点符号问题。 程序要求输入文件和输出文件的名称。 然后它将输入文件中的所有文本复制到输出文件,但是有以下两个更改(1)任何两个或多个空白字符的字符串被一个空格替换; ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM