1. 程式人生 > >c語言文字檔案操作

c語言文字檔案操作

C語言檔案操作模式:

1) 檔案使用方式由r,w,a,t,b,+六個字元拼成,各字元的含義是:
r(read): 讀
w(write): 寫
a(append): 追加
t(text): 文字檔案,可省略不寫
b(banary): 二進位制檔案
+: 讀和寫
2) 凡用“r”開啟一個檔案時,該檔案必須已經存在,且只能從該檔案讀出。
3) 用“w”開啟的檔案只能向該檔案寫入。若開啟的檔案不存在,則以指定的檔名建立該檔案,

若開啟的檔案已經存在,則將該檔案刪去,重建一個新檔案。
4) a 開啟只寫檔案,如果檔案不存在,建立檔案, 寫入追加
5) 在開啟一個檔案時,如果出錯,fopen將返回一個空指標值NULL。在程式中可以用這一資訊來判

別是否完成開啟檔案的工作,並作相應的處理

==========================================================

1.逐行寫入程式碼fputs

// 逐行寫入程式碼fputs
int main(int argc, char *argv[])
{
   const char ch[1024]="xiaoming\n";
   const char ch1[1024]="小黑\n";
   const char ch2[1024]="小鄧\n";
   FILE* p= fopen("D://temp//a.txt","w");
   fputs(ch,p);
   fputs
(ch1,p); fputs(ch2,p); fclose(p); printf("%s\n",ch); }

2.逐行讀取程式碼feof、fgets

int main(int argc, char *argv[])
{
char ch[1024] = { 0 };
FILE* p = fopen(“D://temp//a.txt”, “r”);
while (!feof(p)){//如果沒有到檔案結尾,那麼就一直迴圈
memset(ch, 0, sizeof(ch));
fgets(ch, sizeof(ch), p);
printf(“%s”, ch);
}
fclose(p);
system(“pause”);
}



**3. 逐行讀取字串加密、字串解密**

void code(char *s)
{
while (*s)//遍歷一個字串
{
(*s)++;  // 檔案的 加密,為每一個字串都加1
s++;
}
}

void decode(char *s)
{
while (*s)//遍歷一個字串
{
(*s)--;
s++;
}
} 


int main03()
{
    char s[1024] = { 0 };
    FILE *p = fopen("D:\\temp\\a.txt", "r");//用讀的方式開啟一個檔案
    FILE *p1 = fopen("D:\\temp\\b.txt", "w");//用寫的方式開啟一個檔案
    //feof(p);//如果已經到了檔案結尾,函式返回真
    while (!feof(p))//如果沒有到檔案結尾,那麼就一直迴圈
    {
        memset(s, 0, sizeof(s));
        fgets(s, sizeof(s), p);//第一個引數是一個記憶體地址,第二個引數是這塊記憶體的大小,第三個引數是fopen返回的檔案指標
        code(s);//
        fputs(s, p1);
    }
    fclose(p);
    fclose(p1);
    return 0;
}

int main04()
{
    char s[1024] = { 0 };
    FILE *p = fopen("D:\\temp\\b.txt", "r");//用讀的方式開啟一個檔案
    FILE *p1 = fopen("D:\\temp\\c.txt", "w");//用寫的方式開啟一個檔案
    //feof(p);//如果已經到了檔案結尾,函式返回真
    while (!feof(p))//如果沒有到檔案結尾,那麼就一直迴圈
    {
        memset(s, 0, sizeof(s));
        fgets(s, sizeof(s), p);//第一個引數是一個記憶體地址,第二個引數是這塊記憶體的大小,第三個引數是fopen返回的檔案指標
        decode(s);//
        fputs(s, p1);
    }
    fclose(p);
    fclose(p1);
    return 0;
}

4.逐位元組讀取: getc, 中文亂碼

int main05(){

    FILE *p = fopen("D:\\temp\\a.txt", "r");//用讀的方式開啟一個檔案
    char c = 0;

    while ((c=fgetc(p)) != EOF){  //EOF代表檔案最後的一個結束標示

        printf("%c\n", c);

    }
    fclose(p);
    system("pause");
    return 0;

}

// 逐位元組寫入:  putc
int main06(){
    FILE *p = fopen("D:\\temp\\a.txt", "w");//用讀的方式開啟一個檔案
    if (p == NULL)
    {
        printf("error\n");
    }
    else
    {
        putc('a', p);
        putc('b', p);
        putc('c', p);
        fclose(p);
    }

    system("pause");
}