程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話 以字符串的情勢讀寫文件詳解及示例代碼

C說話 以字符串的情勢讀寫文件詳解及示例代碼

編輯:關於C++

C說話 以字符串的情勢讀寫文件詳解及示例代碼。本站提示廣大學習愛好者:(C說話 以字符串的情勢讀寫文件詳解及示例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話 以字符串的情勢讀寫文件詳解及示例代碼正文


fgetc() 和 fputc() 函數每次只能讀寫一個字符,速度較慢;現實開辟中常常是每次讀寫一個字符串或許一個數據塊,如許能顯著進步效力。

讀字符串函數fgets

fgets() 函數用來從指定的文件中讀取一個字符串,並保留到字符數組中,它的原型為:

char *fgets ( char *str, int n, FILE *fp );

str 為字符數組,n 為要讀取的字符數量,fp 為文件指針。

前往值:讀取勝利時前往字符數組首地址,也即 str;讀取掉敗時前往 NULL;假如開端讀取時文件外部指針曾經指向了文件末尾,那末將讀取不就任何字符,也前往 NULL。

留意,讀取到的字符串會在末尾主動添加 '\0',n 個字符也包含 '\0'。也就是說,現實只讀取到了 n-1 個字符,假如願望讀取 100 個字符,n 的值應當為 101。例如:

#define N 101
char str[N];
FILE *fp = fopen("D:\\demo.txt", "r");
fgets(str, N, fp);

表現從 D:\\demo.txt 中讀取100個字符,並保留到字符數組str中。

須要重點解釋的是,在讀取到 n-1 個字符之前假如湧現了換行,或許讀到了文件末尾,則讀取停止。這就意味著,不論n的值多年夜,fgets() 最多只能讀取一行數據,不克不及跨行。在C說話中,沒有按行讀取文件的函數,我們可以借助 fgets(),將n的值設置地足夠年夜,每次便可以讀取到一行數據。

【示例】一行一行地讀取文件。

#include <stdio.h>
#include <stdlib.h>
#define N 100
int main(){
  FILE *fp;
  char str[N+1];
  if( (fp=fopen("d:\\demo.txt","rt")) == NULL ){
    printf("Cannot open file, press any key to exit!\n");
    getch();
    exit(1);
  }
  
  while(fgets(str, N, fp) != NULL){
    printf("%s", str);
  }
  fclose(fp);
  system("pause");
  return 0;
}

將上面的內容復制到 D:\\demo.txt:

C說話中文網
http://c.biancheng.net
一個進修編程的好網站!

那末運轉成果為:

fgets() 碰到換行時,會將換行符一並讀取到以後字符串。該示例的輸入成果之所以和 demo.txt 堅持分歧,該換行的處所換行,就是由於 fgets() 可以或許讀取到換行符。而 gets() 紛歧樣,它會疏忽換行符。

寫字符串函數fputs

fputs() 函數用來向指定的文件寫入一個字符串,它的原型為:

int fputs( char *str, FILE *fp );

str 為要寫入的字符串,fp 為文件指針。寫入勝利前往非正數,掉敗前往EOF。例如:

char *str = "http://c.biancheng.net";
FILE *fp = fopen("D:\\demo.txt", "at+");
fputs(str, fp);

表現把把字符串 str 寫入到 D:\\demo.txt 文件中。

【示例】向上例中樹立的 d:\\demo.txt 文件中追加一個字符串。

#include<stdio.h>
int main(){
  FILE *fp;
  char str[102] = {0}, strTemp[100];
  if( (fp=fopen("D:\\demo.txt", "at+")) == NULL ){
    printf("Cannot open file, press any key to exit!\n");
    getch();
    exit(1);
  }
  printf("Input a string:");
  gets(strTemp);
  strcat(str, "\n");
  strcat(str, strTemp);
  fputs(str, fp);
  fclose(fp);
  return 0;
}

運轉法式,輸出C C++ Java Linux Shell,翻開 D:\\demo.txt,文件內容為:

C說話中文網
http://c.biancheng.net
一個進修編程的好網站!
C C++ Java Linux Shell

以上就是 C說話字符串的情勢讀取文件,後續持續整頓相干材料,感謝年夜家對本站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved