【发布时间】:2018-03-21 09:33:38
【问题描述】:
我正在尝试从目录中获取文件并将其保存在内存中,目标是然后将文件结构中的信息逐个结构复制到 tmp 文件中,进行一些编辑,然后将新信息保存在新数据中文件。我现在要做的就是获取文件然后打印它。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
typedef struct hw5_struct {
char f_name[12];
char l_name[12];
int age;
float height;
}HW5_struct;
void printThisFile( FILE *data );
int main( int argc, char *argv[] ) {
const char *fileLocation = argv[1];
FILE *originalData = fopen( fileLocation, "r" );
if( access( fileLocation, F_OK ) != -1 )
printf("The file at %s exists\n", argv[1]);
printThisFile( originalData );
//int sizeOfOriginalData = sizeOf( &originalData );
}
void printThisFile( FILE *data ) {
printf( "printThisFile called\n" );
int c;
if ( data ) {
printf( "printing file contents now:\n" );
while( ( c = getc( data ) ) != EOF )
printf("%c", c);
fclose( data );
}
}
它打印以下内容:
FredHutcheson À@LarryStarchÍ̼@LucyLu-FredFlintstone 33£@BarnyRubbleÍÌl@AmandaHelix33³@RobertHenderson7ffÆ@BobbyNLMcÍ̼@BettyDurnanJPBFloodProfÀ@
我真的不知道它应该是什么样子,但绝对不是那样。
【问题讨论】:
-
乍一看,您的输出看起来与您的隐式文件格式兼容。
-
像这样使用
access()几乎毫无意义。如果您要使用它,请在拨打fopen()之前拨打它,但您不应该打扰。您应该检查文件是否在调用fopen()的函数中打开,而不是在被调用函数中打开。如果您不知道数据文件中的含义,我们将如何提供帮助?也许您需要显示将这些记录写入文件的程序。你用了fwrite(),不是吗?为什么不使用fread()读回记录呢?