tolower功能输出错误

问题描述 投票:0回答:1

我有tolower功能的问题。试图将它与argv一起使用,但输出为$ 0 @。我的代码出了什么问题?

#include <stdlib.h>
#include <stdio.h>

void makeLower(char *s) {
    int i;
    for(i = 0; s[i] != '\0'; i++){
        s[i] = tolower(s[i]);
        }
        printf("%s", s);
}

int main(int argc, char *argv[]) {
    argv[0]="A";

    makeLower(argv);
    return 0;
}
c argv argc tolower
1个回答
0
投票

argv是指向指针的指针,这是一个char**。但该功能需要一个char*。所以,你需要传递:

makeLower(argv[0]);

但这不会起作用,因为argv[0]现在指向一个字符串文字。修改字符串文字是undefined

而是通过一个可修改的数组,如:

int main(int argc, char *argv[]) {
    char arr[] = "A";

    makeLower(arr);
    return 0;
}

其他选项是复制传递的字符串文字(通过argv[0])然后你就可以修改它。基本上,这个想法是你不能合法修改C中的字符串文字。

© www.soinside.com 2019 - 2024. All rights reserved.