c - 反转 C 中字符串中的单词顺序

标签 c

所以我正在尝试编写一个 C 程序,它将检查提供给标准输入的数据,并向后打印(到标准输出)每一行上的单词,每个单词恰好由一个空格分隔。我不想颠倒单词中的字母;我只是想颠倒单词的顺序。我希望程序也注意命令行参数,并让程序处理多个文件名。这是我想出的一些代码,我想知道我是否走在正确的轨道上,如果不是,可能会发生什么变化才能到达我需要到达的地方:

#include<stdio.h>
#include<math.h>

void rev(char *l, char *r);

int main(int argc, char *argv[]) {
    char buf[] = "the world will go on forever";
    char *end, *x, *y;
    for(end=buf; *end; end++);
    rev(buf,end-1);
    x = buf-1;
    y = buf;
    while(x++ < end) {
        if(*x == '\0' || *x == ' ') {
           rev(y,x-1);
           y = x+1;
        }
    }
    printf("%s\n",buf);
    return(0);
}

void rev(char *l,char *r) {
    char t;
    while(l < r) {
        t = *l;
        *l++ = *r;
        *r-- = t;
    }
}

如何编辑代码,使其能够从用户可能输入的内容中获取字符串并反转该字符串并输出结果?

最佳答案

至少给定正常的行长度,如果我这样做,我可能会递归地进行。在伪代码中,它会是这样的:

function reverse_words:
  read a word
  if end of line return
  call reverse_words
  print word that was read
  return
end function

或者,读取整行,然后大致使用上面的过程来处理它。

只要稍微小心并明智地使用标准库,这只会比伪代码复杂一点。

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

相关文章:

内置 malloc 的 C 隐式声明

c - 无限循环 (C)

c - 我怎样才能加快这个循环?

c - 给另一种类型变量的指针赋值

c - 指针和字符数组

c - 客户端断开连接后是否可以从客户端套接字读取数据?

c - 在 C 中创建自定义 .txt 文件名时出现问题

c - 在函数中使用 const 修饰符

c - C 语言的输出是什么?

c - 将文本文件中的整数存储到整数数组中