我通过创建各种简单函数来学习C指针。我刚刚创建了一个函数来反转char数组。它可以工作,但在输出后它还会显示一堆垃圾字符(见下面的截图)。
这是我的代码:
void reverseString();
int main()
{
reverseString();
system("PAUSE");
return 0;
}
void reverseString()
{
char string1[20], string2[20];
char *ptr1, *ptr2;
ptr1 = &string1[0];
ptr2 = &string2[0];
printf("Enter string: \n");
scanf("%s", string1);
int len1 = strlen(string1);
int i;
for (i = 0; i < len1; i++)
{
ptr2[i] = ptr1[len1 - i - 1];
}
printf("%s\n", string2);
}
如何摆脱垃圾字符?我的代码有什么问题,或者我只是为了什么或什么来解释?
答案 0 :(得分:8)
你忘记了终止新字符串:
int i;
for (i = 0; i < len1; i++)
{
ptr2[i] = ptr1[len1 - i - 1];
}
// Add this
ptr2[i] = '\0';
当您打印char*
时,它会继续读取,直到找到nul字符。但是既然你把它遗弃了,它就会继续前进......