C语言文件操作,请高手指点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言文件操作,请高手指点相关的知识,希望对你有一定的参考价值。
我学C一学期了,期末老师叫我们做一个学生信息管理系统,我其他都做好了,就是不会写文件操作....我努力尝试了,但还是不行....我想问:文件操作是C里面的难点吗?请高手给我指点迷津!不胜感激!
操作文件首先要打开文件,文件在C中是由一个FILE的结构表示的,所以先要定义一个FILE类型的指针:FILE *pFile;
然后调用fopen函数打开文件,fopen定义如下:
FILE *fopen(
const char* filename,
const char* mode
);
第一个参数是文件的全路径名,注意如果文件叫C:\Test.txt,那么写的时候应该写成"C:\\Text.txt"。因为'\'在C中是转义的意思,所以要写两个。第二个参数是打开的方式,如果是写的话可以用"w",或者"a"。前者会清楚文件中的原有内容重新写,后者会在原有内容中追加。
返回值是一个FILE类型的指针。
语句就是类似于这样:
pFile = fopen("C:\\Test.txt","w");
这样就打开了一个文件。这个文件就有pFile表示。
写文件的函数是
size_t fwrite(
const void* buffer,
size_t size,
size_t count,
FILE* stream
);
第一参数是要写的内容的指针。第二个内容是要写的内容的单位字节数,比如你要写个"HelloWorld".其实就是写10个char类型。那么第二个参数就是sizeof(char)。第三个参数是要写多少个单位。对于这个例子就是10个字符。所以就是10。第四个参数是要写的文件的指针。
返回值是实际写的单位数。
所以语句是:
假设之前有定义:char* buffer="HelloWorld";
fwrite(buffer,sizeof(char),10,pFile);
这样就完成了写文件了。
最后使用完文件,要关闭文件:fclose(pFile);
再给你一个微软MSDN上的例子,你参考一下:
/* FREAD.C: This program opens a file named FREAD.OUT and
* writes 25 characters to the file. It then tries to open
* FREAD.OUT and read in 25 characters. If the attempt succeeds,
* the program displays the number of actual items read.
*/
#include <stdio.h>
void main( void )
FILE *stream;
char list[30];
int i, numread, numwritten;
/* Open file in text mode: */
if( (stream = fopen( "fread.out", "w+t" )) != NULL )
for ( i = 0; i < 25; i++ )
list[i] = (char)('z' - i);
/* Write 25 characters to stream */
numwritten = fwrite( list, sizeof( char ), 25, stream );
printf( "Wrote %d items\n", numwritten );
fclose( stream );
else
printf( "Problem opening the file\n" );
if( (stream = fopen( "fread.out", "r+t" )) != NULL )
/* Attempt to read in 25 characters */
numread = fread( list, sizeof( char ), 25, stream );
printf( "Number of items read = %d\n", numread );
printf( "Contents of buffer = %.25s\n", list );
fclose( stream );
else
printf( "File could not be opened\n" );
Output
Wrote 25 items
Number of items read = 25
Contents of buffer = zyxwvutsrqponmlkjihgfedcb
参考资料:MSDN
参考技术A 不是难点,你到网上搜一下谭浩强的那本书,上面就有,比较简单,好像是《C语言基础》c语言动态库的加载问题!!!!请高手指点!!!!!!!!
其实是在看一个linux 下so动态库的实例的时候感觉不理解,假如我的main.c里调用一个lib.so里面的函数foo()写main的时候前面dlopen加载好了lib.so后面直接写foo()这样不会报错么???我找遍工程里没有一点对foo的定义就直接用了,我们讨论的是在编译的阶段main没跑起来没加载上so怎么就知道有foo这个玩意???真实编译起来还真的没报错,这个实在不好理解啊
只需要在使用到这些公用函数的源程序中包含这些公用函数的原型声明,然后在用gcc命令生成目标文件时指明动态库名进行编译,gcc将会从动态库中将公用函数连接到目标文件中。并没有你理解的需要main跑起来才会加载so追问这里讨论的是一个非gcc连接库文件的场合,假设项目组有两个部门支撑组负责动态库文件部分,而且他们在目标机里面先一步下载进去lib.so了,模块组现在在电脑上做一个新的功能的模块下载进目标机,并调用lib.so,支撑组处于保密需求不能把lib.so给其他部门,所以模块组电脑上就没有lib.so也没有办法gcc把库连接进去了,所以用dlopen调用
参考技术A dlopen 是肯定不会“定义”foo的,它只能加载。肯定有哪里定义过 foo 了。把整个项目 Control-F 一下。
以上是关于C语言文件操作,请高手指点的主要内容,如果未能解决你的问题,请参考以下文章
请高手给予指点。如何将windows应用程序通过网页传给客户端操作?
在WIN7下与linux用TFTP上传文件出现 tftp:outtime,怎么能解决这个问题,请高手指点。