gpt4 book ai didi

C程序大写字符串不起作用

转载 作者:行者123 更新时间:2023-12-02 05:59:01 25 4
gpt4 key购买 nike

因此,对于一项作业,我必须完成一段用于将字符串大写的代码。

我试过的是这样的:

#include <stdio.h>

void capitalize(char *str)
{
int i = 0;
if (str[i] >= 97 && str[i] <= 122)
{
str[i] = str[i] - 32;
}
else
{
i++;
}
}

void strCopy(char *str2, char *str1)
{
while (*str2)
{
*str1 = *str2;
str2++;
str1++;
}
*str1 = '\0';
}

int main(int argc, char **argv)
{
char string1[100] = "This is a really long string!";
char string2[100];
strCopy(string1,string2);
capitalize(string2);
printf("The original string is \"%s\"\n", string1);
printf("The capitalized string is \"%s\"\n", string2);
}

但是,当我尝试运行它返回的代码时:

The original string is "This is a really long string!"
The capitalized string is "This is a really long string!"

strcopy 似乎不是问题所在,因为它将 string1 正确复制到 string2

我不明白为什么 capitalize 不起作用,因为它似乎应该逐个字母地检查并将其更改为 大写,如果字母落下在 ascii 代码中用于小写 字母。

非常感谢有人帮助指出错误所在。

提前致谢!

最佳答案

问题是您的 capitilize 函数没有循环。您只会将字符串的第一个字母大写。

你在正确的轨道上,但你正在寻找的是:

for (int i = 0; str[i] != '\0'; ++i) { // Here we check for the end condition of a string.
// ie. Has the Null termination been reached?
if (str[i] >= 'a' && str[i] <= 'z') {
str[i] = str[i] - ('a' - 'A');
}
}

Here is a live demo for you to play with!

关于C程序大写字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35280280/

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