我在函數「menor」中的fprintf存在問題,因爲數據在所選文件中不可見,我不知道什麼是問題,請幫助,我認爲是參考文件,但不是想法。fprintf in文件未找到
我在函數「menor」中的fprintf存在問題,因爲數據在所選文件中不可見,我不知道是什麼問題,請幫忙,我認爲是參考文件,但不是想法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char * nombre;
char * editorial;
int valor;
int area;
int vendido;
}
Libro;
int conteo(FILE * _entrada);
void datos(FILE * _entrada, Libro * _trabajo, int cantidad);
void menor(FILE * _entrada, FILE * _salida, Libro * _trabajo, int cantidad);
int main() {
FILE * entrada;
char ingreso[256];
printf("Direccion del archivo de entrada \n");
scanf("%255s", ingreso);
entrada = fopen(ingreso, "r");
if (entrada == NULL) {
printf("No se pudo acceder al archivo de entrada \n");
exit(1);
}
FILE * salida;
char final[256];
printf("Direccion del archivo de salida \n");
scanf("%255s", final);
salida = fopen(final, "r");
if (salida == NULL) {
printf("No se pudo acceder al archivo de salida \n");
exit(1);
}
int cantidad = conteo(entrada);
Libro * trabajo;
trabajo = (Libro *) malloc(sizeof(Libro) * cantidad);
datos(entrada, trabajo, cantidad);
menor(entrada, salida, trabajo, cantidad);
return 0;
}
int conteo(FILE * _entrada) {
char auxiliar1[100];
int conteo = 0;
while (!feof(_entrada)) {
fgets(auxiliar1, 100, _entrada);
conteo++;
}
rewind(_entrada);
return (conteo/5);
}
void datos(FILE * _entrada, Libro * _trabajo, int cantidad) {
char auxiliar2[100];
char * token;
while (!feof(_entrada)) {
fgets(auxiliar2, 100, _entrada);
token = strtok(auxiliar2, ":");
token = strtok(NULL, ":");
(_trabajo - > nombre) = strdup(strtok(token, "\n"));
fgets(auxiliar2, 100, _entrada);
token = strtok(auxiliar2, ":");
token = strtok(NULL, ":");
(_trabajo - > editorial) = strdup(strtok(token, "\n"));
fgets(auxiliar2, 100, _entrada);
token = strtok(auxiliar2, ":");
(_trabajo - > valor) = atoi(strtok(NULL, ":"));
fgets(auxiliar2, 100, _entrada);
token = strtok(auxiliar2, ":");
(_trabajo - > area) = atoi(strtok(NULL, ":"));
fgets(auxiliar2, 100, _entrada);
token = strtok(auxiliar2, ":");
(_trabajo - > vendido) = atoi(strtok(NULL, ":"));
}
}
void menor(FILE * _entrada, FILE * _salida, Libro * _trabajo, int cantidad) {
int i;
int menor = 0;
int posicion = 0;
for (i = 0; i < cantidad; i++) {
if ((_trabajo - > area) == 1) {
menor = (_trabajo - > vendido);
_trabajo++;
}
}
_trabajo--;
fprintf(_salida, "%s", (_trabajo - > nombre));
}
請解釋錯誤。它是運行時錯誤還是邏輯錯誤?同時說明你的代碼的目的。這將有助於我們進一步爲您提供建議。 – SanVed
邏輯錯誤,因爲當我在函數「menor」中創建一個FILE時,他寫的是正確的,但在這種情況下,我需要在主文件中創建一個FILE,因爲我需要在另一個函數中寫入此FILE,但不寫入任何內容FILE –