tolower功能输出错误

时间:2016-11-05 19:39:02

标签: c argv argc tolower

我的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;
}

1 个答案:

答案 0 :(得分: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中的字符串文字。