c语言2.一行一行地读这个文件,对于每一行,颠倒单词的顺序。例如,如果行是 “Hello World” ,则应将其转换 为 “world Hello” o
时间: 2024-03-17 15:44:47 浏览: 83
将文件中的内容以每次一个单词的的形式读出
可以使用C语言的文件操作和字符串操作来实现对文件内容的读取和单词颠倒操作,具体实现如下:
```c
#include <stdio.h>
#include <string.h>
#define MAXLEN 100
void reverse_words(char *str) {
char *p = str;
char *q = str;
while (*q) {
q++;
if (*q == '\0') {
while (p < q) {
char tmp = *p;
*p++ = *--q;
*q = tmp;
}
break;
} else if (*q == ' ') {
while (p < q) {
char tmp = *p;
*p++ = *--q;
*q = tmp;
}
p = ++q;
}
}
}
int main() {
char filename[MAXLEN];
printf("请输入文件名: ");
scanf("%s", filename);
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("文件打开失败\n");
return -1;
}
char line[MAXLEN];
while (fgets(line, MAXLEN, fp) != NULL) {
line[strcspn(line, "\n")] = '\0'; // 去掉行末的换行符
reverse_words(line); // 颠倒单词顺序
printf("%s\n", line);
}
fclose(fp);
return 0;
}
```
代码中,我们先输入文件名,然后打开该文件,使用`fgets`函数逐行读取文件内容到缓冲区,并去掉行末的换行符。然后调用`reverse_words`函数,将读取到的行颠倒单词顺序。最后输出颠倒顺序后的行。
`reverse_words`函数的实现中,我们使用两个指针`p`和`q`,从左到右遍历字符串中的单词,将每个单词颠倒顺序。当遇到空格或字符串结尾时,就说明遍历到了一个单词的末尾,需要将该单词颠倒顺序。最后返回到`main`函数中,输出颠倒顺序后的行。
阅读全文