回覆列表
-
1 # 我是大公聚
相關內容
- 對任意輸入的x,用下式計算並輸出y x>0 y=1 x<0 y=-1 x=0 y=0 C語言編寫?
- C語言裡面字串函式strcmpbcmp區別?
- 在C語言中,要求編寫程式在給定的字串中查詢指定的字元?
- 請用簡單C++編寫輸入5個字串,按升序排列後輸出?
- C語言中怎麼弄輸入一個人的名字然後輸出我愛你?
- c語言中,怎麼輸入多組字串,放在二維數組裡?
- C語言,任意輸入十個字元,統計其中數字,字母,空格及回車,其他字元的個數?
- C語言,輸入半徑,求圓的面積和周長?
- c語言,任意一個四位數,求各個位置上的數字並輸出?
- C語言程式設計:從鍵盤輸入任意2個整數,計算它們的商、餘數(均為整數)、相除結果的小數部分(保留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