原意是把文件in.txt的内容复制进out.txt,读取,输出,但不知为何输出的结果很奇怪,求教
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define NUM_SCHOOL 14
#define INFORMATION_SIZE 200
typedef struct
{
int rank;
char information[INFORMATION_SIZE];
}SCHOOL;
typedef struct
{
SCHOOL list[NUM_SCHOOL];
} INPUT;
int readPerfData(INPUT *perfData, char fileName[]);
void writeFile(INPUT *perfData, char outFileName[]);
int main (void)
{
INPUT perfData;
int success, i;
char inFileName[64] = {"in.txt"};
char outFileName[64] = {"out.txt"};
char backUpName[64];
readPerfData(&perfData, inFileName);
writeFile(&perfData, outFileName);
return 0;
}
/* *******************************************************
Reads data from the input file into an array of structures
PRE : perfData - pointer to an empty structure
fileName - the name of the input file
POST : perfData - filled with data from the input file
*/
int readPerfData(INPUT *perfData, char fileName[])
{
FILE *fpIn;
int num, i, j;
int success = 1;
char c;
fpIn = fopen(fileName, "r");
if (!fpIn)
{
success = -1; // file not found
}
else
{
for(i = 0; i <= NUM_SCHOOL; i++)
{
fscanf(fpIn, "%d %[^\n]%*c", &(perfData->list[i].rank), &(perfData->list[i].information[INFORMATION_SIZE]));
}
}
return success;
fclose(fpIn);
}
/* *******************************************************
Generates the output file's name from the inputFile's name
"test.txt" => "test_out.txt"
PRE : fileName - input file name
POST : outFileName - output file name
*/
void writeFile(INPUT *perfData, char outFileName[])
{
FILE *fpOut;
int i;
fpOut = fopen(outFileName, "w");
for (i = 0; i <= NUM_SCHOOL; i++)
{
fprintf(fpOut, "%d %s\n", (perfData->list[i].rank), &(perfData->list[i].information[INFORMATION_SIZE]));
}
fclose(fpOut);
}


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define NUM_SCHOOL 14
#define INFORMATION_SIZE 200
typedef struct
{
int rank;
char information[INFORMATION_SIZE];
}SCHOOL;
typedef struct
{
SCHOOL list[NUM_SCHOOL];
} INPUT;
int readPerfData(INPUT *perfData, char fileName[]);
void writeFile(INPUT *perfData, char outFileName[]);
int main (void)
{
INPUT perfData;
int success, i;
char inFileName[64] = {"in.txt"};
char outFileName[64] = {"out.txt"};
char backUpName[64];
readPerfData(&perfData, inFileName);
writeFile(&perfData, outFileName);
return 0;
}
/* *******************************************************
Reads data from the input file into an array of structures
PRE : perfData - pointer to an empty structure
fileName - the name of the input file
POST : perfData - filled with data from the input file
*/
int readPerfData(INPUT *perfData, char fileName[])
{
FILE *fpIn;
int num, i, j;
int success = 1;
char c;
fpIn = fopen(fileName, "r");
if (!fpIn)
{
success = -1; // file not found
}
else
{
for(i = 0; i <= NUM_SCHOOL; i++)
{
fscanf(fpIn, "%d %[^\n]%*c", &(perfData->list[i].rank), &(perfData->list[i].information[INFORMATION_SIZE]));
}
}
return success;
fclose(fpIn);
}
/* *******************************************************
Generates the output file's name from the inputFile's name
"test.txt" => "test_out.txt"
PRE : fileName - input file name
POST : outFileName - output file name
*/
void writeFile(INPUT *perfData, char outFileName[])
{
FILE *fpOut;
int i;
fpOut = fopen(outFileName, "w");
for (i = 0; i <= NUM_SCHOOL; i++)
{
fprintf(fpOut, "%d %s\n", (perfData->list[i].rank), &(perfData->list[i].information[INFORMATION_SIZE]));
}
fclose(fpOut);
}


