题目描述 文本文件 data.dic 存有若干行由英文单词组成的句子,相邻单词之间有一个空格分割,前三行的信息为:however business leaders have argued that immigration boosts the amarican economy and that ending the daca programme编写程序,输入起始行和终止行,将该范围内的每个单词的首字母改为大写并将结果输出到屏幕上,注意文件中只有小写的英文单词,无其他成分。只需提交需要填写部分的代码。请完善如下程序:#include <stdio.h> #include <stdlib.h> #include <string.h> /* 将每个单词的首字母大写,文件中只存在单词,而且均为小写 */ int main() { FILE *fp; char str[100]; int start, end, i, linecount= 0, slen; /* i为迭代变量,linecount记录当前处理行数是第几行,默认从0开始计数 */ if ((fp= fopen("data.dic", "r")) == NULL ) { printf("can't read data.dic!\n"); exit(-1); } scanf("%d %d", &start, &end); while (!feof(fp)) { fgets(str, 100, fp); linecount++; // 判断是否是 start 至 end 行,不是则继续读文件 if (linecount < start) continue; if (linecount > end) break; if (str[0] > 'z' || str[0] < 'a') break; slen= strlen(str); for (i= 0; i < slen; i++) //符合条件 { /*注意每一行开始的单词前没有空格*/ if (i == 0) str[i]= str[i] - 32; /*******在下面填写代码***********/ /*******在上面填写代码***********/ } printf("%s", str); //输出处理后的字符串 } fclose(fp); return 0; } 输入 输入两个数字 $start$,$end$ $(start \lt end)$。 输出 输出从 $start$ 行到 $end$ 行的修改后的信息。
时间: 2024-02-01 12:03:23 浏览: 221
data_vb.rar_data vb_vb文件读取_vb读取文件_读取文本_读取文本文件
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
FILE *fp;
char str[100];
int start, end, i, linecount = 0, slen;
if ((fp = fopen("data.dic", "r")) == NULL ) {
printf("can't read data.dic!\n");
exit(-1);
}
scanf("%d %d", &start, &end);
while (!feof(fp)) {
fgets(str, 100, fp);
linecount++;
if (linecount < start) {
continue;
}
if (linecount > end) {
break;
}
if (str[0] > 'z' || str[0] < 'a') {
break;
}
slen = strlen(str);
for (i = 0; i < slen; i++) {
if (i == 0) {
str[i] = str[i] - 32;
}
if (i > 0 && str[i - 1] == ' ') { // 如果前一个字符是空格,则当前字符需要转换为大写
str[i] = str[i] - 32;
}
}
printf("%s", str);
}
fclose(fp);
return 0;
}
```
注意需要将每个单词的首字母改为大写,需要判断前一个字符是否为空格。
阅读全文