问题是反转指向字符串的指针数组中的所有字符串。我为同样的目的写了下面的代码。在显示输入的字符串之后,代码无法反转这些字符串。我也尝试过将el和el2字符指针改为字符,但都没有用。请帮我弄一下这个。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
int x, i, length, len, j;
printf("How many strings you want to enter:\n");
scanf("%d", &x);
char *strings[x], string[50], *p, *t, *el, *el2;
for (i = 0; i < x; i++) {
scanf(" %49[^\n]", string);
length = strlen(string);
p = (char *)malloc(length + 1);
strcpy(p, string);
strings[i] = p;
}
printf("Entered strings are:\n");
for (i = 0; i < x; i++) {
printf("%s\n", strings[i]);
}
printf("Reversed strings :\n");
for (i = 0; i < x; i++) {
len = strlen(strings[i]);
for (j = 0; j <= (len - 2) / 2; j++) {
el = (strings[i] + j);
el2 = (strings[i] + (len - j - 1));
t = el2;
el2 = el;
el = t;
}
}
for (i = 0; i < x; i++) {
printf("%s\n", strings[i]);
}
return 0;
}发布于 2019-06-15 18:57:20
您正在交换本地指针变量,这是毫无意义的。
您需要交换指针所指向的char:
for(j=0;j<=(len-2)/2;j++)
{
char t, *el, *el2;
el = (strings[i] + j);
el2 = (strings[i]+(len -j-1));
t = *el2;
*el2 = *el;
*el = t;
}https://stackoverflow.com/questions/56609645
复制相似问题