#include <stdio.h>
#include <string.h>
void reverse(char * str[]) {
int i;
int reverse = sizeof(str);
for(i=0;i<=sizeof(str);i++){
*str[i]=*str[reverse];
reverse--;
}
}
main() {
char *word;
printf("Enter a word please=>");
scanf("%s",word);
reverse(word);
printf("%s",word);
}
我正在尝试获取字符串输入并将其传递给reverse()
函数以反转输入的单词,即("abcd" -> "dcba")
,但是我在使用指针时遇到了一些困难。
我无法更改内存中char *word
所持有的值。
答案 0 :(得分:3)
您尚未为word
分配任何存储空间。变化
char *word;
scanf("%s",word);
到
char word[20];
scanf("%19s",word);
reverse
strlen
来计算字符串的长度。 sizeof
会告诉您平台上char**
的大小。以下(未经测试的)功能应该更接近你想要的
void reverse(char* str) {
int i;
int len = strlen(str);
for (int i=0; i<len/2; i++) {
char tmp = str[i];
str[i] = str[len-i-1];
str[len-i-1] = tmp;
}
}