在C中使用指针反转char数组

时间:2013-11-06 22:05:01

标签: c

我想使用指针反转一个char数组,但是当我printf指针为null时,我得到了所有数据。我不知道我做错了什么或如何解决它。那么如何以类似的方式反转字符串呢?

#include <stdio.h>

void reverse(char *cstr);

int main()
{
    char a[100];
    char *p = a;
    printf("geef een string ");     // ask user to write a word
    scanf("%s", &a);

    reverse(p);

    printf("%s", *p);
}


void reverse(char *p)
{
    int i = 0;
    char temp;
    int lengte;

    for(i = 0; *(p+i) != '\0'; i++)
    {
        lengte++;                        // length of char array without the '\0'
    }

    for(i = 0; i < lengte; i++)
    {
        temp = p[i];               // something goes wrong here but I don't know  what
        p[i] = p[lengte-i];
        p[lengte-i] = tem;
    }
}

出了点问题
p[i] = p[lengte-i];
p[lengte-i] = tem;

一部分。我需要将其更改为什么?

1 个答案:

答案 0 :(得分:1)

两项调整:

替换

printf("%s", *p);

printf("%s", p);

因为printf期待一个指针,而不是一个解除引用的指针, 和

for(i = 0; i < lengte; i++)

for(i = 0; i < lengte--; i++)

因为你计算循环中的长度之前一个char结果太多了。因此\0放在字符串的开头。

$ gcc test.c && ./a.out
geef een string 1234
4231$