我应该在while循环中使用什么条件?

时间:2014-01-05 11:01:44

标签: c

我的目标是将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;
}

2 个答案:

答案 0 :(得分:0)

第二个循环中的条件错误。请记住,由于您没有初始化string2,它将包含看似随机的数据。读取该数据(就像您在第二个循环中所做的那样)会导致未定义的行为

你必须记住数组衰减到指针,这样你就可以使用数组作为指针,并且例如像

这样的条件
while (pointer1 >= string1) {...}

答案 1 :(得分:0)

试试这个

size_t size = strlen(string1) 
while(size--)
{
    *pointer2 = *pointer1;
    pointer1--;
    pointer2++; 
}