私はCでプログラミングする方法を勉強しています。ファイルを使用するのに苦労しています。ファイルの特定の部分にアクセスしてCプログラミングで使用するには?
たとえば、2つのファイルがあります。それには1〜10名の生徒の名前と成績があります。 ように:
John 10 John 5
Alex 6 Alex 9
Mary 8 Mary 6
私は与えられた学生から、具体的な数字をアセスするために取得し、例えば番号を追加するにはどうすればよい、私はfseek関数、SEEK_ENDを使用しなければならないのか、私はftellは使うべきでしょうか? そして、すべての中央値を取る?
コードはどのようにする必要がありますか?
EDIT1:一つだけのファイル(ARQ、alunoがある
enter code here
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char nome[30];
float media;
char situacao;
}informa;
// function to create files \/
int cria_arquivo(){
informa A;
char nome[30];
float n1, n2;
`FILE *arq1, *arq2, *arq3, *arq4; //pointers to archives students, grades,` and anothe file to print on
arq1 = fopen("alunos.txt","r"); // students and grades
arq2 = fopen("notas1.txt","r");
arq3 = fopen("notas2.txt","r");
arq4 = fopen("turma.dat", "wb");
if((arq1 == NULL) || (arq2 == NULL) || (arq3 == NULL) || (arq4 == NULL)){
printf("FATAL ERROR - NAO E POSSIVEL ABRIR ARQUIVOS"); //cant open the files
exit(1);
}
while(1){
//printf("ola");
fscanf(arq1, "%s", nome);
printf("%s\n", nome);
if (feof(arq1)) {
break;
}
//printf("Funciona");
fscanf(arq2, "%f", &n1);
fscanf(arq3, "%f", &n2);
strcpy(A.nome, nome);
A.media = (n1+n2)/2;
printf("%f\n", A.media);
if(A.media < 5){
A.situacao = 'F';
}
else{
A.situacao = 'A';
}
fwrite(&A, sizeof(informa), 1, arq4);
}
fclose(arq1); fclose(arq2); fclose(arq3); fclose(arq4);
return 0;
}
int main(){
cria_arquivo();
return 0;
}
あなたが扱うファイルはきれいに構造化されたテキストファイルです。 'fscanf'について読んで使用してください。 – DyZ
あなたが何を求めているのかは不明です。さらに、データがどのように見えるかは不明である。宿題のように見えますが問題はより明確になっている必要があります。また、問題を解決するために既に行っていることが必要です。 –
テキストファイルの要素は一般的に*可変幅*であるため、テキストファイルの場合、データの特定の位置を探すことは不可能です。テキストファイルの場合、通常、ファイル全体を読み込み、必要なものが見つかるまで各レコードを解析する必要があります。 –