【发布时间】:2009-10-30 00:04:22
【问题描述】:
我怎么用下面的方法,把字符串中的所有字符都转成大写,
while (*postcode) {
*postcode = toupper(*postcode);
postcode++;
}
使用以下参数有效,
char wrong[20];
strcpy(wrong, "la1 4yt");
但以下不是,尽管它们是相同的?
char* wrong = "la1 4yt";
我的程序在尝试写入非法地址时崩溃(我猜是段错误)。不是mallocing 有问题吗?不是零极限?不应该……
通过调试,我注意到它在尝试将第一个字符分配为大写时崩溃。
任何帮助表示赞赏!
【问题讨论】:
-
+1 用于避免
*postcode = toupper(*postcode++);或同样糟糕的*postcode++ = toupper(*postcode);:) -
为了大声哭泣......这个完全相同的问题每周至少出现两次。
-
你曾经是个新手,也是个短暂的人
-
是的,但仅在 Stack Overflow 上搜索“c segfault”就可以在前 5 名中找到答案。新手并不排斥您自行搜索和阅读文档。
标签: c