温馨提示:本文翻译自stackoverflow.com,查看原文请点击:c - Why does strcpy change the value of this one parameter?
c string strcpy

c - 为什么strcpy更改此参数的值?

发布于 2020-03-28 23:23:00

嗨,我创建的这段代码大写小写字母。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;
}

查看更多

查看更多

提问者
jason96
被浏览
145
Some programmer dude 2020-01-31 17:40

问题是,该capitalize功能的所有字母为大写转换到位也就是说,您作为参数传递的字符串将是要转换的字符串。

如果您不想修改原始字符串,则需要分两个步骤进行:

strcpy(stringTwo, string);  // First copy the original string
capitalize(stringTwo);  // Then make all letters upper-case in the copy