【发布时间】:2017-01-01 23:39:48
【问题描述】:
名为“grades.txt”的文件包含课程的学生成绩,格式如下,以空格分隔:(示例文件如下)
First name Last name Midterm Final
Ali Caliskan 60 40
Veli Dalgaci 80 10
Turkan Sevimli 90 50
Ali Yilmaz 30 70
Ahmet Koc 50 50
编写一个程序,计算学生的总成绩并将其写入两个单独的文件:“passed.txt”和“failed.txt”。期中成绩占40%,期末成绩占60%。及格分数为 50。示例输出文件如下:
First name Last name Midterm Final Overall
passed.txt:
Turkan Sevimli 90 50 66
Ali Yilmaz 30 70 54
Ahmet Koc 50 50 50
failed.txt:
Ali Caliskan 60 40 48
Veli Dalgaci 80 10 38
我可以阅读“grades.txt”,但无法存储它们。这是我的代码;
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char* string[100];
char line[100];
char junk[100];
FILE *file = fopen("grades.txt", "r");
if(!file) {
printf("Could not open file. Exiting application. Bye");
return 1;
}
while(!feof(file)) {
fscanf(file,"%[^ \n\t\r]s",line); //Get text
printf("%s\n", line);
fscanf(file,"%[ \n\t\r]s",junk); //Remove any 'white space' characters
}
fclose(file);
}
#include "stdio.h"
#include <string.h>
int main() {
FILE *pToFile = fopen("grades.txt","r");
int line = 0;
char * pch;
char input[512];
while( fgets( input, 512, pToFile ))
{
line++;
printf("%s",input);
}
printf("\n\nEnd Of Program\n");
fclose(pToFile);
return 0;
}
我也写了,但是这个没有分隔 txt 行,我认为继续使用这段代码会更难。
【问题讨论】:
-
不要用
feof()控制文件读取循环。 -
“程序出错”。什么错误?请具体。
-
你在哪里尝试写入文件,你会得到一个错误?你遇到了什么错误?
-
我编译成功了,当我运行它就停止工作了
-
strcat(line,str1[100][i]);这是什么意思?由于多种原因,这是错误的。 1.str1从未被初始化过。 2.str1[100]是缓冲区溢出,因为100不是该数组的有效索引。 3.str1[100][i]是char而不是char *所要求的strcat。