我必须编写一个程序,该程序将获取文本文件的内容并使用递归反转每一行。例如这个文件:
abc def ghi
jkl mno pqr
最终应该是:
ihg fed cba
rpq onm lkj
我认为最好的方法是将内容放入链接列表中,然后分别反转每一行。链接列表部分工作得很好,除了我不太确定如何执行反转部分。这是我到目前为止所拥有的:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#define NODE struct list
void reverse(void);
struct list {
char array[20];
struct list *next;
};
int main(void)
{
reverse();
return 0;
}
void reverse(void)
{
NODE *p;
p = head;
while (p != NULL)
{
reverse(p->array + sizeof(p->array));
printf("%d", p->array);
}
return;
}
最佳答案
我想,类似的事情。如您的示例所示,数组的大小被硬编码为 10。使用递归:
void reverse( struct list *p )
{
if( p )
{
int i;
reverse(p->next);
for (i=0;i<10;++i)
{
char tmp=p->array[i];
p->array[i]=p->array[i+10];
p->array[i+10]=tmp;
}
p->array[19]=0; // to ensure 0 byte at string end
}
}
关于c - 反转字符串结构中的每个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9495752/