所以我正在尝试编写一个 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/