1.没有使用二进制读写,\'被转义为\
2.防止超出数组范围导致读取错误
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> int main() {char s[10][40];int i = 0,n=0;FILE* fp;fp=fopen("data4.txt", "r");while ((fgets(s[i], 40, fp)) != NULL)i++;for (int j = 0; j < i; j++) {for (int a=0; a < strlen(s[j]);a++) {if(s[j][a]!=' '&&s[j][a]!='\n')n ++;}}printf("%d\n%d", i, n);return 0; }

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h>#define N 10typedef struct {long id; // 准考证号char name[20]; // 姓名float objective; // 客观题得分float subjective; // 操作题得分float sum; // 总分char result[10]; // 考试结果 } STU;// 函数声明 void read(STU st[], int n); void write(STU st[], int n); void output(STU st[], int n); int process(STU st[], int n, STU st_pass[]);int main() {STU stu[N], stu_pass[N];int cnt;double pass_rate;printf("从文件读入%d个考生信息...\n", N);read(stu, N);printf("\n对考生成绩进行统计...\n");cnt = process(stu, N, stu_pass);printf("\n通过考试的名单:\n");output(stu, N); // 输出所有考生完整信息到屏幕write(stu, N); // 输出考试通过的考生信息到文件 pass_rate = 1.0 * cnt / N;printf("\n本次等级考试通过率: %.2f%%\n", pass_rate*100);return 0; }// 把所有考生完整信息输出到屏幕上 // 准考证号,姓名,客观题得分,操作题得分,总分,结果 void output(STU st[], int n) {int i;printf("准考证号\t姓名\t客观题得分\t操作题得分\t总分\t\t结果\n");for (i = 0; i < n; i++)printf("%ld\t\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%s\n", st[i].id, st[i].name, st[i].objective, st[i].subjective, st[i].sum, st[i].result); }// 从文本文件examinee.txt读入考生信息:准考证号,姓名,客观题得分,操作题得分 void read(STU st[], int n) {int i;FILE *fin;fin = fopen("examinee.txt", "r");if (!fin) {printf("fail to open file\n");return;}for (i = 0; i < n; i++)fscanf(fin, "%ld %s %f %f", &st[i].id, st[i].name, &st[i].objective, &st[i].subjective);fclose(fin); }// 把通过考试的考生完整信息写入文件list_pass.txt // 准考证号,姓名,客观题得分,操作题得分,总分,结果 void write(STU s[], int n) {FILE* fp;fp = fopen("list_pass.txt", "w");for (int i = 0; i < n; i++) {if (strcmp(s[i].result, "通过") == 0)fprintf(fp,"%10ld%10s%10.2f%10.2f%10.2f%10s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].result);} // 待补足// xxx }// 对考生信息进行处理:计算每位考生考试总分、结果;统计考试通过的人数 int process(STU st[], int n, STU st_pass[]) {int x=0;for (int i = 0; i < n; i++) {st[i].sum = st[i].objective + st[i].subjective;if (st[i].sum >= 60) {strcpy(st[i].result, "通过");st_pass[x] = st[i];x++;}elsestrcpy(st[i].result, "未通过");}return x; }

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<time.h> #include<stdlib.h> #define N 100int main() {FILE *fp;char s[N][N];int i, n=0,x;srand(time(NULL));fp = fopen("list.txt", "rb");if (!fp) {perror("list.txt");return 1;}while (fgets(s[n], N, fp)!=NULL){n++;}fclose(fp);fp=fopen("time.txt","wb");int flag[N];for (i = 0; i < N; i++)flag[i] = -1;for (i = 0; i < 5; i++) {x = rand() % n;if (flag[x] == -1) {flag[x] *= -1;printf("%s", s[x]);fprintf(fp,"%s", s[x]);}elsei--;}fclose(fp);return 0;


?