【发布时间】:2018-09-26 18:02:05
【问题描述】:
这是我的程序。 char s3[2] = "q" 的输出是 "QC++",而它应该只是 "Q"。我想我必须重置指针,但我不确定如何。
void myToUpperCase(const char *source, char *dest){
for(int i = 0; *(source + i) != '\0'; i++)
{
*(dest + i) = toupper(*(source + i));
}
}
char s2[20] = "#c++";
char s3[2] = "q";
char result[20];
myToUpperCase(s2, result);
cout << "- s2 (\"" << s2 << "\") myToUpper() -> " << result << " => " << ((strcmp(result, "#C++") == 0) ? "correct.\n" : "INCORRECT.\n");
myToUpperCase(s3, result);
cout << "- s3 (\"" << s3 << "\") myToUpper() -> " << result << " => " << ((strcmp(result, "Q") == 0) ? "correct.\n" : "INCORRECT.\n");
【问题讨论】:
-
myToUpperCase不会 NUL 终止输出缓冲区。它仍然保留先前活动留下的任何垃圾。
标签: c++ arrays pointers function-pointers