gpt4 book ai didi

c - 替换字符串上的字母C语言

转载 作者:太空宇宙 更新时间:2023-11-04 07:52:23 25 4
gpt4 key购买 nike

我现在正在练习弦乐,我尝试在这个程序中做的是打印类似这样的内容:hello world 到 Hello WorlD 作为输出。

我的代码如下:

#include <stdio.h>

#include <string.h>

void convertir(char cadena[200]){

int length = strlen(cadena);

int i;

printf("%c", cadena[0]-32); // Prints letter in caps

for(i=1;i<length-1;i++){

if(cadena[i] == ' '){ // Search if there is space

printf("%c", cadena[i-1]-32);

i=i+1; // Adds vaule on i with accumulator to make caps the letter after the space

printf(" %c", cadena[i]-32); // prints letter in caps after space

} else {

printf("%c", cadena[i]); // prints everything in the string

}

}

printf("%c", cadena[length-1]-32);

}

int main(int argc, char const *argv[]) {

char cadena[200];

printf("Introduce un texto: ");

gets(cadena);

convertir(cadena);

return 0;

}

在键入 hello world 后编译返回的代码是:HelloO WorlD,我正在尝试替换 中的 o >HelloO 但我有点糊涂了...

感谢任何帮助。

谢谢。

最佳答案

我对您的 for 循环进行了以下更改,它似乎按您预期的那样工作:

for(i=1;i<length-1;i++)
{
if(cadena[i + 1] == ' ') /*** Look If Next Character Is A Space ***/
{
printf("%c", cadena[i]-32); /*** Print Current Character In Uppercase ***/
i=i+1; // Adds vaule on i with accumulator to make caps the letter after the space
printf(" %c", cadena[i + 1]-32); /*** Print Character After Space In Caps ***/
i=i+1; // Adds vaule on i with accumulator to make caps the letter after the space
}
else
{
printf("%c", cadena[i]); // prints everything in the string
}
}

输出:

$ ./main.exeIntroduce un texto: hello worldHellO WorlD

展望 future ,您应该做几件事来使您的程序更健壮:

  1. 不要假设没有前导空格(或空格)
  2. 不要假设每个字符都是小写
  3. 不要假设每个字符都是一个字母
  4. 不要假设单词之间只有一个空格(或空格)

关于c - 替换字符串上的字母C语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53036339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com