嗨,我创建的这段代码大写小写字母。strcpy设法将string的值复制到stringTwo,但是我想知道为什么strcpy如果只将其用作参数,也会更改string的值。谢谢
#include <stdio.h>
#include <string.h>
char *capitalize(char *str) {
int i;
for (i = 0; i < strlen(str); i++) {
if (str[i] >= 97 && str[i] <= 122) {
str[i] -= 32;
}
}
return str;
}
int main() {
char string[21];
char stringTwo[21];
printf("Enter string: ");
scanf("%20s", string);
strcpy(stringTwo, capitalize(string));
printf("\n%s\ncapitalized: %s", string, stringTwo);
return 0;
}
问题是,该capitalize
功能的所有字母为大写转换到位。也就是说,您作为参数传递的字符串将是要转换的字符串。
如果您不想修改原始字符串,则需要分两个步骤进行:
strcpy(stringTwo, string); // First copy the original string
capitalize(stringTwo); // Then make all letters upper-case in the copy
还是
capitalize(strcpy(stringTwo, string));
需要迈出一步...好吧,看起来很丑...