【发布时间】:2016-05-16 05:54:27
【问题描述】:
我正在学习 C++ 中的指针,虽然在这个主题上没有我想的那么清楚,但我正在慢慢实现。
我的目标是编写一个使用指针表示法的函数,遍历一个数组并更改输入的大小写。
例如
("ab7d") myToUpper() -> AB7D
这是我的想法。
void myToUpperCase(const char *source, char *dest)
{
for (int i = 0; *(source + i) != '\0'; i++)
{
*(dest + i) = toupper(* (source + i));
}
}
结果
("ab7d") myToUpper() -> AB7D\377
有人介意解释将\377 添加到输出中的原因吗,显然我只是在寻找要在此处更改的源,而没有添加到输出中。
谢谢
【问题讨论】:
-
你没有以空值终止你的输出。
-
@KerrekSB 你介意解释一下吗?我对 C++ 还很陌生。
-
把
for循环变成do-while循环.. -
为什么不使用迭代器和更好的......为什么不使用 for_each 和 lambaded toupper?
-
还要提防潜在的
toupperUB。 stackoverflow.com/questions/21805674/…