#include <stdio.h> int main() { FILE* fp; char ch = '\0', ch1 = '\0', ch2 = '\0'; int Part[6] = { 0 }, targetPart = 0,lines ,readedLines = 0; Part[0] = 5; scanf("%d", &targetPart); fp=fopen("dict.dic", "r"); fscanf(fp, "%d\n%d\n%d\n%d\n%d\n", Part + 1, Part + 2, Part + 3, Part + 4, Part + 5); lines = Part[targetPart]-Part[targetPart-1]; if (targetPart != 1){ char tem[99999]; for (int j = 0; j < Part[targetPart-1]-5; ++j) { fgets(tem,99998,fp); } } while (ch != EOF&&readedLines < lines) { ch = fgetc(fp); if (feof(fp)) return 0; if (ch == '/') { ch1 = ch; ch2 = fgetc(fp); if ( ch2 == '') { while (!feof(fp)) { ch2 = fgetc(fp); if (ch1 == '' && ch2 == '/') { ch1 = '\0'; ch2 = '\0'; ch = ch2; break; } ch1 = ch2; if (ch2 == '\n') { readedLines++; } if (readedLines > lines) return 0; } } else if ( ch2 == '/') { while (!feof(fp)) { ch = fgetc(fp); if (ch == '\n') { ch = '\0'; ch1 = '\0'; ch2 = '\0'; readedLines++; printf("\n"); break; } } } else { printf("%c%c", ch1, ch2); } } else { printf("%c", ch); } if (ch == '\n' || feof(fp) == -1) readedLines++; } fclose(fp); return 0; }给出每行注释
时间: 2023-10-22 08:07:45 浏览: 201
#include <stdio.h>
这是一个C语言程序,下面是每行的注释:
```c
#include <stdio.h> // 包含标准输入输出库的头文件
int main() { // 主函数
FILE* fp; // 文件指针
char ch = '\0', ch1 = '\0', ch2 = '\0'; // 用于读取文件中的字符
int Part[6] = { 0 }, targetPart = 0,lines ,readedLines = 0; // Part数组存储文件中每个部分的起始位置和行数,targetPart表示要读取的部分,lines表示该部分的行数,readedLines表示已读取的行数
Part[0] = 5; // Part数组的第一个元素为5
scanf("%d", &targetPart); // 从标准输入读取目标部分的序号
fp=fopen("dict.dic", "r"); // 打开文件dict.dic,以只读方式打开
fscanf(fp, "%d\n%d\n%d\n%d\n%d\n", Part + 1, Part + 2, Part + 3, Part + 4, Part + 5); // 读取文件中Part数组的值
lines = Part[targetPart]-Part[targetPart-1]; // 计算目标部分的行数
if (targetPart != 1){ // 如果目标部分不是第一部分
char tem[99999]; // 定义临时字符数组
for (int j = 0; j < Part[targetPart-1]-5; ++j) { // 跳过前面的部分
fgets(tem,99998,fp); // 读取一行字符
}
}
while (ch != EOF&&readedLines < lines) { // 循环读取文件中的字符,直到读取完目标部分的所有行
ch = fgetc(fp); // 读取一个字符
if (feof(fp)) return 0; // 如果到达文件结尾,则结束程序
if (ch == '/') { // 如果是注释符号
ch1 = ch; // 将注释符号赋值给ch1
ch2 = fgetc(fp); // 读取下一个字符
if ( ch2 == '') { // 如果下一个字符为空
while (!feof(fp)) { // 循环读取文件中的字符
ch2 = fgetc(fp); // 读取一个字符
if (ch1 == '' && ch2 == '/') { // 如果连续两个字符都是注释符号
ch1 = '\0'; // 清空ch1
ch2 = '\0'; // 清空ch2
ch = ch2; // 将下一个字符赋值给ch
break; // 跳出循环
}
ch1 = ch2; // 将ch2赋值给ch1
if (ch2 == '\n') { // 如果是换行符
readedLines++; // 已读取的行数加1
}
if (readedLines > lines) // 如果已读取的行数大于目标部分的行数
return 0; // 结束程序
}
} else if ( ch2 == '/') { // 如果下一个字符仍然是注释符号
while (!feof(fp)) { // 循环读取文件中的字符
ch = fgetc(fp); // 读取一个字符
if (ch == '\n') { // 如果是换行符
ch = '\0'; // 清空ch
ch1 = '\0'; // 清空ch1
ch2 = '\0'; // 清空ch2
readedLines++; // 已读取的行数加1
printf("\n"); // 输出换行符
break; // 跳出循环
}
}
} else { // 如果下一个字符不是注释符号
printf("%c%c", ch1, ch2); // 输出连续的两个字符
}
} else { // 如果不是注释符号
printf("%c", ch); // 输出该字符
}
if (ch == '\n' || feof(fp) == -1) // 如果是换行符或到达文件结尾
readedLines++; // 已读取的行数加1
}
fclose(fp); // 关闭文件
return 0; // 程序结束
}
```
阅读全文