第五節(文件、預處理)

知識點

1.讀文件

int main(int argc, const char * argv[]) {
    
    char *path="/Users/huozhenpeng/Desktop/long_text.txt";
    
    FILE *fp;
    fp=fopen(path, "r");
    
    char chr[50];
    while(fgets(chr, 50, fp))
    {
        printf("%s\n",chr);
    }
    fclose(fp);//記得關閉
    return 0;
}

可以正確輸出結果:

    <dimen name="px2dp_92">92px</dimen>

    <dimen name="px2dp_94">94px</dimen>

    <dimen name="px2dp_96">96px</dimen>

當把一個指針作為條件表達式時,所要判斷的條件實際上就是“該指針是否為一空指針”

2.寫文件

int main(int argc, const char * argv[]) {
    char *path="/Users/huozhenpeng/Desktop/long_text1.txt";
    FILE *fp;
    fp=fopen(path, "w");
    char *content="hello world";
    fputs(content, fp);
    
    return 0;
}

以“w”方式打開一個文件時,如果這個文件不存在則會創建該文件。

image.png
image.png

文件概念

一個文件分為兩部分:控制信息和內容信息
控制信息:比如說右鍵看文件的屬性(大小、格式、存放的路徑等等)
內容信息:文件的實際的內容

讀文件的過程:磁盤->文件緩沖區->應用程序內存空間
從磁盤到文件緩沖區的時候,會根據文件中控制信息(純文本、圖片)來進行相應的解碼操作。
c語言中二進制文件和文本文件讀寫的區別:
寫:\n自動轉換為\r\n
讀:\r\n自動轉換為\n

復制文件

int main(int argc, const char * argv[]) {
    char *originalPath="/Users/huozhenpeng/Desktop/long_text.txt";
    
    char * filePath="/Users/huozhenpeng/Desktop/long_text2.txt";

    FILE *read;
    FILE *write;
    
    read=fopen(originalPath, "r");
    write=fopen(filePath, "w");
    
    char temp[50];
    int len=0;
    
    while ((len=fread(temp, sizeof(char),50 , read))>0) {
        
        
        fwrite(temp, sizeof(char), len, write);
        
    }
    
    fclose(read);
    fclose(write);

獲取文件大小

int main(int argc, const char * argv[]) {

    char *originalPath="/Users/huozhenpeng/Desktop/long_text.txt";
    FILE *read=fopen(originalPath, "r");
    fseek(read, 0, SEEK_END);//將文件指針read從文件末尾(SEEK_END)偏移0個字節(以字節為單位)
    long size= ftell(read);//獲取當前文件指針read所指向的位置
    printf("文件長度=%ld\n",size);

    
    return 0;
}

輸出結果:

文件長度=11721
image.png

文件加密

假設加密算法就是把每個字符的值加2

int main(int argc, const char * argv[]) {
    
    char *originalPath="/Users/huozhenpeng/Desktop/long_text.txt";
    
    char * filePath="/Users/huozhenpeng/Desktop/long_text2.txt";
    
    FILE *read;
    FILE *write;
    
    read=fopen(originalPath, "r");
    write=fopen(filePath, "w");
    
    int temp;
    
    
    //#define   EOF (-1)
    while ((temp=fgetc(read))!=EOF) {
        
        fputc(temp+2, write);
        
    }
    
    fclose(read);
    fclose(write);
    
    
    
    return 0;

}

文件解密

int main(int argc, const char * argv[]) {
    
    char *originalPath="/Users/huozhenpeng/Desktop/long_text2.txt";
    
    char * filePath="/Users/huozhenpeng/Desktop/long_text3.txt";
    
    FILE *read;
    FILE *write;
    
    read=fopen(originalPath, "r");
    write=fopen(filePath, "w");
    
    int temp;
    
    
    //#define   EOF (-1)
    while ((temp=fgetc(read))!=EOF) {
        
        fputc(temp-2, write);
        
    }
    
    fclose(read);
    fclose(write);
    
    
    
    return 0;
}

預處理

概念要復雜很多,可以百度
http://blog.csdn.net/dlutbrucezhang/article/details/8753765
就是這些東西

#include <iostream>
#include <stdio.h>
#define MAX 5;
#define COMPARE(x,y) x>y?x:y

程序驗證:

#include <iostream>
#include <stdio.h>
#define MAX 5;
#define COMPARE(x,y) x>y?x:y

int main(int argc, const char * argv[]) {
    int m;
    m=COMPARE(3, 10);
    printf("%d\n",m);
    
    return 0;
}

輸出結果:

10
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • feisky云計算、虛擬化與Linux技術筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,921評論 0 5
  • 官網 中文版本 好的網站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,464評論 0 5
  • C/C++輸入輸出流總結 前兩天寫C++實習作業,突然發現I/O是那么的陌生,打了好長時間的文件都沒有打開,今天終...
    LuckTime閱讀 1,752評論 0 6
  • [轉]C/C++ 文件讀寫操作總結 在編程的過程中,文件的操作是一個經常用到的問題,在C++Builder中,可以...
    天之道天知道閱讀 5,227評論 0 7
  • 一夜風雨催醒夢, 牡丹花依葉碧青。 時光催人勤勞動, ...
    太陽哥月亮妹閱讀 408評論 0 1