企业做网站需要什么资料,网站关键词优化到首页难度,建设网站的推广的软文,网络图怎么绘制文章目录 C语言文件操作读文件写文件其他操作文件指针重定位获取指针位置获取文件大小重命名文件删除文件 C文件操作读文件读文件 Windows文件操作读文件写文件其他操作复制文件删除文件/目录判断目录是否存在遍历目录下的文件和目录 ATL读写文件 Linux文件操作 C语言文件操作 … 文章目录 C语言文件操作读文件写文件其他操作文件指针重定位获取指针位置获取文件大小重命名文件删除文件 C文件操作读文件读文件 Windows文件操作读文件写文件其他操作复制文件删除文件/目录判断目录是否存在遍历目录下的文件和目录 ATL读写文件 Linux文件操作 C语言文件操作
文件访问模式字符串含义若文件不存在实动作“r”从头读打开失败“w覆盖写创建新文件“a”追加写创建新文件“r”覆盖式可读可写错误“w”覆盖式可读可写创建新文件“a”追加式可读可写创建新文件“rb”从头读二进制打开失败“wb”覆盖写二进制创建新文件“ab”追加写二进制创建新文件“rb”覆盖式可读可写二进制错误“wb”覆盖式可读可写二进制创建新文件“ab”追加式可读可写二进制创建新文件
读文件
#include stdio.h
int main() {
// 1.打开文件FILE* fr fopen(E:\\work\\testFile\\messfile\\23-11-6\\1.txt, r); //以读的方式打开文件if (fr NULL) { //file为NULL,则打开文件失败,退出程序printf(File cannot be opened! \n);return -1;}// 2.读取内容char buf[0xFF] { 0 };// 2.1 按字节块读取while (!feof(fr)) //没有到文件末尾{memset(buf, 0, sizeof(buf));size_t len fread(buf, sizeof(char), sizeof(buf), fr); //每次读取sizeof(char)个字节读取sizeof(buf)次也可使用fscanf函数printf(buf: %s, len: %d\n, buf, len);}// 2.2 按字行读取此方法读取中文会有bugchar* str NULL;while (!feof(fr)) {memset(buf, 0, sizeof(buf));str fgets(buf, sizeof(buf), fr); //fgets一次最多读取sizeof(buf)个字节,遇到换行符会停止读取printf(buf: %s \n, buf); printf(str: %s \n, str); //str 内容和buf内容相同 }// 2.3 按字符读取char c 0;while (c ! EOF){c fgetc(fr); // 获取一个字符printf(%c, c);}printf(\n);// 3.关闭文件if (fclose(fr) ! 0){printf(File cannot be closed! \n);return -1;}else{printf(File is now closed! \n);}return 0;
}写文件
#include stdio.h
int main(int argc, char* argv[])
{// 1.打开文件FILE* fw fopen(E:\\work\\testFile\\messfile\\23-11-6\\1.txt, w); //以读的方式打开文件if (fw NULL) { //file为NULL,则打开文件失败,退出程序printf(File cannot be opened! \n);return -1;}// 2.写入内容char buf[128] { 0 };// 2.1 按数据块写入char str[] 南浦凄凄别西凤袅袅秋。;memcpy(buf, str, strlen(str));fwrite(buf, strlen(buf) 1, 1, fw); //每次写入strlen(buf)个字节写入1次。可以使用fprint函数// 2.2 按行写入while (NULL ! fgets(buf, sizeof(buf), stdin)) {printf(Read line with len: %d\n, strlen(buf));fputs(buf, fw);fflush(fw); //刷新输出缓冲区printf(%s, buf);}// 2.3 按字符写入char ch getchar();while (ch ! $){fputc(ch, fw);ch getchar();}// 3.关闭文件if (fclose(fw) ! 0){printf(File cannot be closed! \n);return -1;}else{printf(File is now closed! \n);}return 0;
}
其他操作
文件指针重定位
int fseek ( FILE * stream, long int offset, int origin );
stream流 offset相对应 origin 位置处的偏移量单位为字节 origin指针的位置 #define SEEK_CUR 1 // 当前位置 #define SEEK_END 2 // 末尾 #define SEEK_SET 0 // 开头
获取指针位置
long int ftell ( FILE * stream );
获取文件大小
long n;
fseek(pf,0,SEEK_END);
nftell(pf);重命名文件
int rename ( const char * oldname, const char * newname );
oldname原名 newname新名
删除文件
int remove ( const char * filename );
filename文件的完整路径 C文件操作
打开方式含义ios::in从头读ios::out覆盖写ios::ate文件指针放到尾部ios::app追加写ios::trunc清空内容ios::binary二进制方式打开
读文件
#include fstream
#include iostream
using namespace std;
int main(int argc, char* argv[])
{// 1.打开文件fstream fr;fr.open(1.txt, ios::in); //以只读模式打开文件if (!fr.is_open())std::cerr cannot open the file! endl;// 2.读取内容char buf[1024] { 0 };// 2.1 按元素读取while (fr buf)cout buf endl; //每一次的buf是空格或回车键分开的元素// 2.2 按行取while (fr.getline(buf, sizeof(buf)))std::cout buf std::endl;// 2.3 按字符读取char c;while ((c fr.get()) ! EOF)std::cout c;// 2.4常用于二进制文件读写,也可以读非二进制文件fr.read((char*)buf, sizeof(buf)); //读取到buf中读取sizeof(buf)个字节 cout buf;// 3.关闭文件fr.close();return 0;
}读文件
#include fstream
#include iostream
using namespace std;
int main(int argc, char* argv[])
{// 1.打开文件ofstream fw;fw.open(1.txt, ios::app); //以追加写模式打开文件if (!fw.is_open())std::cerr cannot open the file! endl;// 2.写入内容 // 2.1 直接写入fw 心断新丰酒销愁斗几千。 endl;// 2.2 常用于二进制写入,也可用于普通文件写入char buf[1024] 我未成名君未嫁可能俱是不如人。;fw.write((char*)buf, strlen(buf));// 3.关闭文件fw.close();system(pause);return 0;
}Windows文件操作
读文件
#include windows.h
int main(int argc, char* argv[])
{// 1.打开文件HANDLE hFile CreateFile(1.txt, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile NULL) { return -1;}// 2.读文件char buf[128] { 0 };DWORD len 0;DWORD dwBytesToRead GetFileSize(hFile, NULL); //获取文件大小do { //循环读文件确保读出完整的文件 if (!ReadFile(hFile, buf, dwBytesToRead, len, NULL)) {cout read file error! GetLastError() endl;return -1;}cout buf endl;dwBytesToRead - len;} while (dwBytesToRead 0);// 3.关闭文件CloseHandle(hFile);return 0;
}写文件
int main(int argc, char* argv[])
{// 1.打开文件HANDLE hFile CreateFile(1.txt, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile NULL) { return -1;}SetFilePointer(hFile, 0, NULL, FILE_END); //文件指针设置到文件尾实现追加写// 2.写文件char buf[128] { 0 };DWORD len 0;char str[] 劳歌一曲解行舟红叶青山水急流日暮酒醒人已远满天风雨下西楼。;memcpy(buf, str, strlen(str));WriteFile(hFile, buf, strlen(buf), len, NULL);FlushFileBuffers(hFile); //刷新缓存// 3.关闭文件CloseHandle(hFile);system(pause);return 0;
}其他操作
复制文件
CopyFile()
删除文件/目录
deleteFiles(dir)
判断目录是否存在
#includeio.h
if (!GetFileAttributesA(mTempDir.c_str()) FILE_ATTRIBUTE_DIRECTORY) //mTempDir目录是否存在不存在则创建目录resultFlag CreateDirectory(mTempDir.c_str(), NULL);
遍历目录下的文件和目录
//文件句柄win10用long longwin7用long就可以了
long long hFile 0;
//文件信息
struct _finddata_t fileinfo;
if ((hFile _findfirst(p.assign(path).append(\\*).c_str(), fileinfo)) ! -1) //第一次查找组合的p起来目录或文件是否存在
{do{ if ((fileinfo.attrib _A_SUBDIR))//如果是目录,迭代之 {if (strcmp(fileinfo.name, .) ! 0 strcmp(fileinfo.name, ..) ! 0)getFiles(p.assign(path).append(\\).append(fileinfo.name), files, names);}else//如果不是,加入列表files.push_back(p.assign(path).append(\\).append(fileinfo.name));} while (_findnext(hFile, fileinfo) 0);_findclose(hFile);
}ATL读写文件
#includeatlfile.h
using namespace std;
int main(int argc, char* argv[])
{CAtlFile file;file.Create(L1.txt, GENERIC_WRITE, 0, OPEN_EXISTING);char buf[128] 北斗横天夜欲阑愁人倚月思无端。;file.Seek(0, FILE_END);file.Write(buf, strlen(buf));file.Flush();return 0;
}Linux文件操作
敬请期待