【发布时间】:2021-12-16 14:11:35
【问题描述】:
当我去编译我的代码时,我收到了这个烦人的警告。我正在尝试使用char * 并将其转换为小写,然后再通过测试运行它。我的代码编译得很好,但我想学习如何摆脱这个警告。具有相同错误的其他帖子没有提供我需要更改以消除此错误的内容。
//convert to lower case
char *c = "WORD TO LOWER";
char *s[testWordLen];
for (int i = 0; i < testWordLen; i++)
{
s[i] = tolower((unsigned char) c[i]);
}
解释我做错了什么也很好。
【问题讨论】:
-
char *s[testWordLen];->char s[testWordLen];第一个是指针数组,第二个是字符数组。 -
不,抱歉,您的代码不是“编译得很好”——“烦人的警告”是一个严重的问题!在 C 语言中有两种处理字符串的方法:使用
char的数组,或使用指向char的指针。但是你有一个指向char的指针数组,这两者都不是! -
感谢@RetiredNinja。我会改变它,看看它是如何运行的。
-
(免责声明:我没有投反对票。)我认为“投反对票”是一种误导,但是,它会降低您的声誉。如果您将鼠标悬停在向下的三角形上,您会看到“这个问题没有显示任何研究工作;......”这是一个不赞成投票的合理理由。即使对于新手来说,也应该表明他们已经阅读并试图理解(在这种情况下)警告或错误消息。您可以通过解释您认为警告的内容以及您认为没有问题的原因来做到这一点。
-
"Compiles fine" 和 "annoying warning" 也是不理解问题的迹象。如果编译器是一个人,他会为可能的错误代码感到恼火,反复呈现它,但幸运的是它还好心地举手,没有感到疲倦。 ;-) 将编译器视为您的朋友,竭诚为您提供帮助。