自定義一個可以接收空格的字串的函式

安然先生發表於2020-09-29

在linux系統下使用C語言開發時,在特定場景之下需要用到字串輸入語句,並且有時會輸入空格。使用通常使用的字串輸入函式則會出現一些問題。
(1)使用scanf不能接收空格
(2)使用gets又會出現警告 ,又記憶體溢位的風險,
(3)使用fgets時,親測,雖然可以接收帶有空格的字串命令,但是其內容卻帶有換行符,無法正確識別原來的字串命令

void mygets(char get_str[128])//形參傳入一個字元型的陣列,或者一個字串變數
{
        int i;
        char c;//作為值的中間傳遞
        for(i=0;i<128;i++)//使用迴圈將每個輸入的字元存入字元陣列的每一個地址中
        {
                c=getchar();//先將輸入的每個字元存入C
		get_str[i]=c;//再將存入C的字元賦值給字元陣列
		if(c=='\n')
 		{  
			get_str[i]='\0';//當按下回車時,將回車符改為空格符並且結束輸入
   			break;
  		}
        }
}

PS:
(1)我們知道的是如果形參傳入的是一個地址,會改變原地址所存放的資料
(2)根據字串輸入的長度,自擬陣列長度哦!

相關文章