簡體   English   中英

在C中使用指針反轉char數組

[英]Reverse char array with pointer in 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;

部分。 我需要將其更改為什么?

兩項調整:

更換

printf("%s", *p);

printf("%s", p);

因為printf需要一個指針,而不是一個取消引用的指針,並且

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

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

因為您對循環長度的計數在該循環結束之前以一個字符結束太多。 因此, \\0放在字符串的開頭。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM