※ 引述《joans (宅?)》之銘言:
: 遇到的問題: (題意請描述清楚)
: 我看書本 scanf() 這個函數 可以接收輸入的字串在按下ENTER前都接收進來
: (可能是我誤會書上的意思 ...)
: 我的code 如下:
: #include <stdio.h>
: #include <string.h>
: int main(int arge,char* argv[])
: {
: char num1[10];
: int leng=0;
: printf("輸入一個字串:");
: scanf("%s",&num1);
: leng = strlen(num1);
: printf("%d",leng);
: return 0;
: }
: 希望得到的正確結果:
: 我以為輸入 >>a b c
: leng變數應該是 5
: (應該連空格都一起存進去array才對..)
: 程式跑出來的錯誤結果:
: 執行出來 leng=1
: 我試著印出 陣列的東西
: 卻跑出 a @ *@@ b4@
一個簡單的解決方法是改用 getchar() 一個一個字元讀進來, 然後偵測換行
例如下面這個 subroutine
/************************************************
* getline -- Get the string input until *
* a line break is met or maximum size *
* (defined by size) is reached *
************************************************/
unsigned int getline(char *text, unsigned int size)
{
unsigned int i = 0;
while (i < size - 1)
{
text[i] = getchar();
if (text[i] == '\n')
{
text[i] = '\0';
break;
}
i++;
}
return (i + 1);
}
--
Les grandes et les meilleurs tone from "Zadok the Priest"
Eine grosse stattliche Veranstaltung by F. Handel
THE MAIN EVENT! These are the men
Sie sind die Besten
"Champions League" by Tony Britten THESE ARE THE CHAMPIONS!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.94.63
※ 編輯: uranusjr 來自: 140.112.94.63 (08/04 18:41)