c - 试图定义函数来反转字符串

标签 c

<分区>

我在 C 中编写了这个函数来反转字符串,但它不起作用。

#define         MAXSIZE         30

char buffer[MAXSIZE] = "hello";
int main(void)
{
    strrev(buffer);
    printf("%s",buffer);
    return 0;
}

void strrev(char *s)
{
    char c = 0;
    char *ptr = s;
    while(*s)
        s++;
    char *f = s;
    while(ptr != f);
    {
        c = *ptr;
        *ptr = *s;
        *s = c;
        s--;
        ptr++;
    }
}

我找不到那个代码有什么问题

最佳答案

您的功能几乎没有问题。

1) while(*s) s++; 移动指针 s指向\0 .所以需要指向\0之前的字符通过做f=s-1;

2) 去掉while(ptr != f)末尾的分号如果你的 buffer 中还有一个额外的字符,条件将不起作用, 所以将其更改为 while(ptr < f)

3) 你应该替换*ptr = *s; *s = c; s--;*ptr = *f; *f = c; f--;

关于c - 试图定义函数来反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51192318/

相关文章:

c - 在c中的函数中返回一个不同类型的值

c - 为什么我得到错误的输出?

c - 我应该在 getspent() 之前调用 lckpwdf() 吗?

c - 警告 : format string contains '\0' within the string body [-Wformat]

c# - Do-While循环的可接受用法?

c - 将文件读入C中的多维字符数组

c - 为两个连接的字符串分配内存

c++ - 有没有更简洁的方法来公开测试的实现细节?

关系运算符的链接给出了错误的输出

c - 有哪些方法可以对相应二进制编码大于硬件支持的值进行算术运算?