首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么代码没有颠倒字符串?

为什么代码没有颠倒字符串?
EN

Stack Overflow用户
提问于 2019-06-15 18:50:46
回答 3查看 52关注 0票数 0

问题是反转指向字符串的指针数组中的所有字符串。我为同样的目的写了下面的代码。在显示输入的字符串之后,代码无法反转这些字符串。我也尝试过将elel2字符指针改为字符,但都没有用。请帮我弄一下这个。

代码语言:javascript
运行
复制
#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;
}
EN

Stack Overflow用户

回答已采纳

发布于 2019-06-15 18:57:20

您正在交换本地指针变量,这是毫无意义的。

您需要交换指针所指向的char

代码语言:javascript
运行
复制
    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;
    }
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56609645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档