[英]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.