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