回覆列表
  • 1 # 我是大公聚

    其實核心就是實現動態陣列,無論字串多長,都能夠儲存。用getchar一個一個得到字元,直到檔案結束。核心程式碼實現:

    int n=0,k=100; //初始化,字串長度為0,字串空間長度為100 char * s2 = NULL,s1 = (char *)malloc(100); //初始化字串空間 if (s1 == NULL) return; //記憶體分配失敗,返回 while((c=getchar())!=EOF){ //判斷是否到檔案結束,一個個讀取字元 if(k<=n){ //當前字串長度大於等於字串空間長度時 k*=2; //長度增長2倍 s2 = (char *)realloc(s1,k); //重新分配記憶體 if(s2 == NULL){ //記憶體分配失敗 free(s1); //釋放已分配記憶體 return; }else{ //記憶體分配成功 s1=s2; } } s1[n++]=c; //字串賦值字元 } s1[n]=0; //字串末尾置為\0

  • 中秋節和大豐收的關聯?
  • 清水煮白菜的功效?