我想使用指针反转一个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;
一部分。我需要将其更改为什么?
答案 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$