提示裡有說,要用 sscanf(),然而重點是對 C 而言要怎麼跳過 空白
這就要靠強大的指標來處裡了
sscanf( 來源字串的指標 , 指定格式 , 對應變數/陣列/指標 )
第一個是 來源字串的指標 是測資裡的一行字串,前面用 gets() 包含空白整個讀取
然後用 i 當做索引,要取想要的指標就用 &str[ i ] 就好,方便移動 i 值
第二個是 指定格式 ,這裡用 "%s" 讀,因為每個單字都有空白隔開,所以不會讀到其他單字
第三個是 對應變數/陣列/指標 ,本題是存取單字用的,所以用一個字元陣列
至於空白怎麼跳,首先是一開始,要處理第一個單字前可能的空白, 用while(str[i]==' ')
只要是空白 i 就加一,這個迴圈跳出時 str[i] 就是第一個單字的開頭
然後是 while(sscanf()!=EOF) 在裡面處理每個單字,每次處理完 i 要加單字的長度跳過這個字
然後就跟前面一樣,跳過空白,用 sscanf( &str[i] , .... , ....) 讀下一個字
當讀到結束字元就可以輸出答案了
以上是 C 的方法,敬請指教
提示裡有說,要用 sscanf(),然而重點是對 C 而言要怎麼跳過 空白
這就要靠強大的指標來處裡了
sscanf( 來源字串的指標 , 指定格式 , 對應變數/陣列/指標 )
第一個是 來源字串的指標 是測資裡的一行字串,前面用 gets() 包含空白整個讀取
然後用 i 當做索引,要取想要的指標就用 &str[ i ] 就好,方便移動 i 值
第二個是 指定格式 ,這裡用 "%s" 讀,因為每個單字都有空白隔開,所以不會讀到其他單字
第三個是 對應變數/陣列/指標 ,本題是存取單字用的,所以用一個字元陣列
至於空白怎麼跳,首先是一開始,要處理第一個單字前可能的空白, 用while(str[i]==' ')
只要是空白 i 就加一,這個迴圈跳出時 str[i] 就是第一個單字的開頭
然後是 while(sscanf()!=EOF) 在裡面處理每個單字,每次處理完 i 要加單字的長度跳過這個字
然後就跟前面一樣,跳過空白,用 sscanf( &str[i] , .... , ....) 讀下一個字
當讀到結束字元就可以輸出答案了
以上是 C 的方法,敬請指教
這題我是用strtok()來解的。
首先用fgets讀取整行,然後用strtok()分割字串,分隔後判斷是否整個字都是數字