TOP
File * fp=fopen(fname,"r");
if(fp==NULL) {
fprintf(stderr,"%s open failed\n",fname);
exit(EXIT_FAILURE);
}
if(fp==NULL) {
fprintf(stderr,"%s open failed\n",fname);
exit(EXIT_FAILURE);
}
use link count of hard linked files.
link(old,new);unlink(old);
link(old,new);unlink(old);
stat
int stat(const char *path, struct stat *buf);
struct stat {
dev_t st_dev; /* ファイルがあるデバイスの ID */
ino_t st_ino; /* inode 番号 */
mode_t st_mode; /* アクセス保護 */
nlink_t st_nlink; /* ハードリンクの数 */
uid_t st_uid; /* 所有者のユーザ ID */
gid_t st_gid; /* 所有者のグループ ID */
dev_t st_rdev; /* デバイス ID (特殊ファイルの場合) */
off_t st_size; /* 全体のサイズ (バイト単位) */
blksize_t st_blksize; /* ファイルシステム I/O での
ブロックサイズ */
blkcnt_t st_blocks; /* 割り当てられた 512B のブロック数 */
time_t st_atime; /* 最終アクセス時刻 */
time_t st_mtime; /* 最終修正時刻 */
time_t st_ctime; /* 最終状態変更時刻 */
};
- if not exist, ENOENT
int stat(const char *path, struct stat *buf);
struct stat {
dev_t st_dev; /* ファイルがあるデバイスの ID */
ino_t st_ino; /* inode 番号 */
mode_t st_mode; /* アクセス保護 */
nlink_t st_nlink; /* ハードリンクの数 */
uid_t st_uid; /* 所有者のユーザ ID */
gid_t st_gid; /* 所有者のグループ ID */
dev_t st_rdev; /* デバイス ID (特殊ファイルの場合) */
off_t st_size; /* 全体のサイズ (バイト単位) */
blksize_t st_blksize; /* ファイルシステム I/O での
ブロックサイズ */
blkcnt_t st_blocks; /* 割り当てられた 512B のブロック数 */
time_t st_atime; /* 最終アクセス時刻 */
time_t st_mtime; /* 最終修正時刻 */
time_t st_ctime; /* 最終状態変更時刻 */
};
#include <sys/stat.h> /* if missing, error"aggregate `stat stat_buf' has incomplete type" will appear*/ struct stat buf; stat("makefile", &buf); printf("file size=%ld\n", (long)buf.st_size);
int fd ; struct stat buf; FILE* fp = fopen( "makefile", "rb" ); fd = fileno(fp) ; fstat(fd,&buf) ; printf("size = %ld\n",(long)buf.st_size);
long filesize; FILE* fp = fopen( "makefile", "rb" ); fseek( fp, 0L, SEEK_END ); filesize = ftell( fp ); fclose( fp ); printf("file size=%ld\n", filesize);
int fseek( FILE *stream, long offset, int origin );
void rewind( FILE *stream );
void rewind( FILE *stream );
- origin
SEEK_CUR | Current position of file pointer. |
SEEK_END | End of file. |
SEEK_SET | Beginning of file. |
- if(successful) return 0;
long ftell( FILE *stream );
int fgetpos( FILE *stream, fpos_t *pos ); // returns 0 if successful
int fgetpos( FILE *stream, fpos_t *pos ); // returns 0 if successful
- get current position
sr = gcnew StreamReader(fname) ;
if(sr->CurrentEncoding == System::Text::Encoding::UTF8){
// no bomb utf
sw = gcnew StreamWriter(tempFileName,false,gcnew System::Text::UTF8E
ncoding(false));
} else {
sw = gcnew StreamWriter(tempFileName,false,sr->CurrentEncoding);
}
sw->NewLine = "\n";
if(sr->CurrentEncoding == System::Text::Encoding::UTF8){
// no bomb utf
sw = gcnew StreamWriter(tempFileName,false,gcnew System::Text::UTF8E
ncoding(false));
} else {
sw = gcnew StreamWriter(tempFileName,false,sr->CurrentEncoding);
}
sw->NewLine = "\n";
#include <fstream> #include <iostream> std::fstream fr( fname.c_str(), std::ios::in ); // text mode open , use ios::binary for "rb" if( fr.fail() ){ cerr << "failed to open" << fname << endl; exit(1); } std fstream * fw = new std::fstream( workFname.c_str(), std::ios::out| ios:: binary );
最新コメント