因此,对于作业,我必须完成一个用于大写字符串的代码.
我试过的是这个:
#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);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行它返回的代码时:
原始字符串是"这是一个非常长的字符串!"
大写字符串是"这是一个非常长的字符串!"
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');
}
}
Run Code Online (Sandbox Code Playgroud)