#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
size_t i,n;
size_t nFileSize;
int nDiff = 0;
size_t nNewFileSize = 0;
char *pBuf;
FILE *fp = fopen(argv[1] , "rb");
if (fp == NULL)
return -1;
// 現在のファイルポインタの位置を末尾まで移動
fseek(fp, 0, SEEK_END);
// ファイルの読み書き位置を取得してファイルサイズとして設定する。
nFileSize = ftell(fp);
// ファイルは改行コードしかない場合、ファイルクローズする。
if (nFileSize < 2) {
fclose(fp);
return -1;
}
// 動的メモリの確保
pBuf = (char *)malloc(nFileSize);
if (pBuf == NULL) {
fclose(fp);
return -1;
}
// ファイルの長さまで1回を読み込み
n = fread(pBuf, nFileSize,1,fp);
// ファイルクローズ
fclose(fp);
// 読み込み失敗の場合
if (n < 1) {
//メモリ解放
free(pBuf);
return -1;
}
// データ読み込み成功の場合、
for (i = 0; i < nFileSize; i++) {
if ( i < nFileSize -1 ) {
if (*(pBuf + i) == '\r' && *(pBuf + i + 1) == '\n') {
i++;
nDiff +=2;
countinue;
}
}
if (nDiff > 0) {
*(pBuf + i - nDiff) = *(pBuf + i);
}
nNewFileSize++:
}
fp = fopen(argv[1],"wb");
if (fp == NULL) {
free(pBuf);
return -1;
}
// 引数は数値に変換する
// nNewFileSize = atoi(argv[2]);
n = fwrite(pBuf, nNewFileSize,1,fp);
fclose(fp);
free(pBuf);
if (n < 1){
return -1;
}
printf("上書きできました。")
return 0;
}