我的目标是将string1以相反的顺序复制到string2中,但是我在第二个while循环中的条件显然是不正确的,我如何实现while循环继续直到string1的所有字母都输入了string2?因为'在while循环之前递减指针1之后,string1中的\ 0'已经过了...
//reversing strings..
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *pointer1;
char *pointer2;
char string1[20];
char string2[20];
pointer1 = string1; //allowing pointer to point to first letter of string1
pointer2 = string2; //allowing pointer2 to point to first alphabet of string2
printf("enter a string\n");
gets(string1);
while (*pointer1)
{pointer1++;}
pointer1--;
while(*pointer2)
{
*pointer2 = *pointer1;
pointer1--;
pointer2++;
}
*pointer2 = '\0';
printf("%s", string2);
return 0;
}
答案 0 :(得分:0)
第二个循环中的条件错误。请记住,由于您没有初始化string2
,它将包含看似随机的数据。读取该数据(就像您在第二个循环中所做的那样)会导致未定义的行为。
你必须记住数组衰减到指针,这样你就可以使用数组作为指针,并且例如像
这样的条件while (pointer1 >= string1) {...}
答案 1 :(得分:0)
试试这个
size_t size = strlen(string1)
while(size--)
{
*pointer2 = *pointer1;
pointer1--;
pointer2++;
}