我的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;
}
答案 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中的字符串文字。