回覆列表
-
1 # 我弟弟打架似的
相關內容
- c語言,輸入一串字元(長度不超過80個字元),要求將其中的數字字元複製到另一個字串中?
- 為什麼abcdeFg字串長度小於abcdef c語言?
- 怎麼用C語言實現:輸入一個人名字的拼音(字串),以數字形式或各字串+4的形式輸出?
- 在C語言中,系統在每一個字串的結尾自動加一個“字串結束標誌符“,即_______,以便系統據此?
- c語言程式設計,不用字串處理庫函式,實現strcpy的功能?
- c語言,如何讀取逗號分隔的字串,將逗號間的字串分別提取出來?
- C語言:輸入5個字串,按由小到大(我想應該是strcmp函式比較)的順序輸出?
- 一道c語言程式題: 輸入5個字串,按字典順序將其重新排列輸出。用字串指標實現?
- C語言程式題從鍵盤接收5個字串,然後按字典順序排序後輸出程式如下,幫幫改下吧?
- 用C語言任意輸入5個數,求其中的最大值,並列印輸出?
其實核心就是實現動態陣列,無論字串多長,都能夠儲存。
用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