tolower 函数输出错误
Wrong output from tolower function
我对较低的功能有疑问。尝试将它与 argv 一起使用,但输出为 $0@。我的代码有什么问题?
#include <stdlib.h>
#include <stdio.h>
void makeLower(char *s) {
int i;
for(i = 0; s[i] != '[=10=]'; 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 中的字符串文字。
我对较低的功能有疑问。尝试将它与 argv 一起使用,但输出为 $0@。我的代码有什么问题?
#include <stdlib.h>
#include <stdio.h>
void makeLower(char *s) {
int i;
for(i = 0; s[i] != '[=10=]'; 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 中的字符串文字。