c - 反转字符串

标签 c string

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *s[]={"To err is human...","But to really mess things up...","One needs to know C!!"};
    int i,j,len,t;
    for(i=0;i<=2;i++)
    {
        len=strlen(s[i]);
        for(j=0;j<len/2;j++)
        {
            t=*(s[i]+len-1-j);
            *(s[i]+len-1-j)=*(s[i]+j);
            *(s[i]+j)=t;
        }
    }
    for(i=0;i<=2;i++)
        printf("%s\n",s[i]);
    return 0;
}

上面的程序有什么错误。我只是交换每个字符串两端的值。

最佳答案

除此之外,

char *s[]={"人都会犯错...","但是真正把事情搞砸...","一个人需要了解 C!!"};

在这里声明并初始化一个指向 char 的指针数组。这样每个指针都指向给定的字符串文字。因此,无论您在 for 循环中执行什么操作来反转或更改这些字符串,都将导致未定义的行为(在这种情况下,UB 通常是段错误/崩溃)。

至少将其更改为 char s[][100] = {"人都会犯错...","但是要真正把事情搞砸...","一个人需要了解 C!! “};

关于c - 反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38742558/

相关文章:

objective-c - 在 C/Objective-C 中使用带有系统函数的 cd ~ 不能正确地 cd

c - 如何在ubuntu中为c语言安装lprotobuf-c

java - 将字符串分成子字符串,将它们转换为整数,并将它们分配给实例变量

c# - 正则表达式围绕大括号拆分

php - 查找字符串中选定字符的最长连续序列的长度(PHP)?

使用 mpicc (MPICH2) 和 pthread_barrier (-lpthread) 编译

c - 解析两个数字 - 高位数字和个位数字

c - 赋值从整数生成指针而不进行强制转换

string - 浮点到字符串的无损转换并返回 : is it possible?

r - 如何从R中的字符串中提取数字?