C語言輸入字串和數字時如何用逗號隔開

2021-08-20 02:30:43 字數 2109 閱讀 3161

1樓:蒙印枝威丁

1如果使用scanf進行格式化輸入,用逗號隔開不適用於先輸入字串後輸入數字的情況,僅適用於數字的間隔,或者先輸入數字後輸入字串。

下面是先輸入數字後輸入字串的例子:

#include

int main()

如果輸入:

123,abc

會輸出:

abc123

但是如果先輸入字串再輸入數字,比如用scanf("%s,%d",s,&v);的格式,系統會出錯。

2如果需求必須是先輸入字串後輸入數字,那麼必須人工進行判斷。

思路為用getchar逐個讀入字元,並賦值到字串對應位置,當出現逗號時結束。然後再用scanf讀入數字。

**如下:

#include

int main()

i ++;

}scanf("%d",&v);//繼續輸入數字。

printf("%s\n%d\n", s, v);//輸出得到的變數,每行一個值。

return 0;

}以上程式輸入:

abcd,123

輸出哦abcd123

2樓:軍悅昆吾

用scanf讀入資料時,如果將字元陣列寫在前面可能會有問題,因此讀入時需要注意順序。

假設char

name[20];

intage;

scanf("%d,%s",&age,&name);

這樣不會用問題

如果scanf("%s,%d",&name,&age);

這樣讀資料的話,可能會出現問題。

你自己試一下,想想為什麼,呵呵

c語言中 那個格式控制字串 可以輸入數字和字元

3樓:

scanf():通過格式控制符%s輸入字串。除了字串,scanf()還能輸入其他型別的資料。

scanf()讀取字串時以空格為分隔,遇到空格就認為當前字串結束了,所以無法讀取含有空格的字串。

gets():直接輸入字串,並且只能輸入字串。gets()認為空格也是字串的一部分,只有遇到回車鍵時才認為字串輸入結束,所以,不管輸入了多少個空格,只要不按下回車鍵,對gets()來說就是一個完整的字串。

換句話說,gets()用來讀取一整行字串。

擴充套件資料scanf()和gets()的使用:

#include

intmain();

charstr2[30]=;

charstr3[30]=;

//gets()用法

printf("inputastring:");

gets(str1);

//scanf()用法

printf("inputastring:");

scanf("%s",str2);

scanf("%s",str3);

printf("\nstr1:%s\n",str1);

printf("str2:%s\n",str2);

printf("str3:%s\n",str3);

return0;}

4樓:卒子的瘋狂

%s,可以輸入一串字元,數字、特殊符號、英文都通用

5樓:匿名使用者

%d可以輸出int型別的整形數字

%f可以輸出float型別的浮點型也就是小數數字%c可以輸出字元比如英文字母、漢字、特殊字元和數字還有%lf、%ld等可以去了解一下。

c語言中用scanf控制輸入,printf控制輸出。

比如我定義了一個變數int a;

如果對a進行賦值,就用到了scanf,具體語句:scanf("%d",&a);

如果要對a進行輸出,就要用到printf,具體語句:printf("%d",a);

觀察上面兩個語句,共同點都是有個引號引號裡面是格式控制字元,這個要和你前面定義的int保持一致(如果是float a,那麼就用%f)。不同的是scanf後面用&a,這個&可以讀作and,是地址符,輸入的時候必須在變數前面加上(如果不加,編譯不會出錯但是執行的時候會猶豫記憶體分配等問題而強制退出等),printf直接寫變數就可以了。

c語言字串輸入輸出問題,一個C語言字串輸入輸出問題

在你輸入int型別的n後同時輸入了一個換行符,這使a 0 n 而不是 a 所以說你的a字元型陣列存的其實是 nabcd e 則沒有讀入,可以考慮用scanf s a 來讀入,或在輸入字元前用getchar 把換行符讀掉 那是鍵盤緩衝區殘餘資訊的問題 include int main while c ...

c語言字串長度如何數,C語言字串長度如何數?

1 首先開啟vs2014,新建一個專案。2 然後我們根據圖示 新建一個main函式。3 然後我們根據圖示 新增標頭檔案。4 然後我們根據圖示 新增main函式。5 然後我們根據圖示 定義int變數len。6 然後我們根據圖示 定義char型別變數str。7 然後我們根據圖示 使用scanf給str賦...

c語言如何求字串長度,c語言 計算字串長度

你的 出現問題的原因是scanf s a a是一個char型別的變數,系統為它分配了一個位元組的記憶體空間,但是你卻輸入了一個字串到以a的地址為首地址的一段連續的記憶體空間裡,這樣就出現了越界錯誤.但是printf函式並不檢查越界錯誤,它會按正常的方法執行,然後程式統計出長度,列印出來結果.但是返回...