㈠ c語言字元串gets(str)
在scanf("%c",&ch);之後加上getchar();
#include<stdio.h>
int main(void)
printf("Input a character: ");
scanf("%c",&ch);
fflush(stdin);//加上這句,清掉輸入字元後,你再輸入的回車符
printf("Input a string: ");
char str[80];
gets(str);
printf("%c ",ch);
puts(str);
return 0;
}
字元串
因為本函數可以無限讀取,易發生溢出。如果溢出,多出來的字元將被寫入到堆棧中,這就覆蓋了堆棧原先的內容,破壞一個或多個不相關變數的值。
這個事實導致gets函數只適用於玩具程序,為了避免這種情況,可以用fgets(stdin) (fgets實際上可以讀取標准輸入,即大多數情況下的鍵盤輸入),具體參閱fgets詞條)來替換gets()。在V7的手冊中說明:為了向後兼容,gets刪除換行符,gets並不將換行符存入緩沖區。
以上內容參考:網路-gets
㈡ C語言當用戶要求輸入的字元串中含有空格時,應使用的輸入函數是什麼啊
用gets()函數;gets從標准輸入設備讀字元串函數,其可以無限讀取,不會判斷上限,以回車結束讀取,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。
功能
從stdin流中讀取字元串,直至接受到換行符或EOF時停止,並將讀取的結果存放在buffer指針所指向的字元數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為『\0』空字元,並由此來結束字元串。
返回值
讀入成功,返回與參數buffer相同的指針;讀入過程中遇到EOF(End-of-File)或發生錯誤,返回NULL指針。所以在遇到返回值為NULL的情況,要用ferror或feof函數檢查是發生錯誤還是遇到EOF。
(2)c語言用戶字元串擴展閱讀:
gets()函數用法:
示例
1、C:
#include
<stdio.h>
//這個頭文件包含gets()函數,這個函數在ISO/IEC
9899
2011(C11)標准中被移除
int
main(void)
{
char
str1;
//不要char*p,然後gets(p),這是錯誤的,因為p沒有指向有效的內存,它可能指向任何非法地址//地方的未知大小的內存塊,這樣以來,就可能修改了不屬於本程序的內存的內容
gets(str1);
printf("%s\n",
str1);
return
0;
}
#include
<stdio.h>//gets_s()用法
#define
CH
20
int
main(void)
{
char
ch[CH];
printf("請輸入你的名字:\n");
gets_s(ch,CH);
//這里不能用gets_s(ch);
printf("這是你的名字:%s\n",
ch);
return
0;
}
2、C++:
#include
<iostream>
#include
<cstdio>
using
namespace
std;
int
main()
{
char
str[100];
gets(str);
cout<<str<<endl;
return
0;
}
gets()函數用來從標准輸入設備(鍵盤)讀取字元串直到換行符結束,但換行符會被丟棄,然後在末尾添加'\0'字元。其調用格式為:
gets(s);其中s為字元串變數(字元串數組名或字元串指針)。
gets(s)函數與scanf("%s",s)相似,但不完全相同,使用scanf("%s",s)
函數輸入字元串時存在一個問題,就是如果輸入了空格會認為字元串結束,空格後的字元將作為下一個輸入項處理,但gets()函數將接收輸入的整個字元串直到遇到換行為止。
也就是說:gets()函數讀取到\n(我們輸入的回車)於是停止讀取,但是它不會把\n包含到字元串裡面去。然而,和它配合使用的puts函數,卻在輸出字元串的時候自動換行。
㈢ C語言程序設計,用戶輸入一個字元串,一個字元,統計該字元在字元串中出現的次數。寫出程序,加急
#include<stdio.h>
main()
{char s[99],c;
int i=0,n=0;
printf("輸入字元串(按Enter結束):\n");
gets(s);
printf("輸入字元(按Enter結束):");
c=getchar();
for(i=0;i<99;i++)
{if(c==s[i])
n++;
}
printf("字元串%s中字元%c出現%d次",s,c,n);
}
//看時間,你是用不到了,留個要學習的看吧。(字元串中可能有空格,所有不要用scanf函數for循環獲取)
㈣ C語言:字元串輸入與輸出
#include
<stdio.h>
int
main()
{
char
str1[21]
=
{0},
str2[21]
=
{0},
str3[21]
=
{0};
//
getchar實現
printf("請輸入一個長度不超過20的字元串(getchar實現):");
int
c
=
0,
i
=
0;
while
((c
=
getchar())
!=
'\n')
{
str1[i++]
=
c;
}
//
scanf實現
printf("請輸入一個長度不超過20的字元串(scanf實現):");
scanf("%s",
str2);
getchar();
//
取走緩沖區的換行符
//
gets實現
printf("請輸入一個長度不超過20的字元串(gets實現):");
gets(str3);
//
putchar輸出
printf("putchar輸出:");
i
=
0;
while
(str1[i]
!=
'\0')
{
putchar(str1[i++]);
}
//
printf輸出
printf("\nprintf輸出:");
printf("%s\n",
str2);
//
puts輸出
printf("puts輸出:");
puts(str3);
printf("\n");
return
0;
}
問題答案:
1.
getchar可以根據用戶自定義的字元結束輸入,不受換行符和空白字元的限制
2.
scanf不能輸入空格,另外兩個可以
3.
在保證數據不會超出內存范圍的情況下,用gets和puts最方便
不存在空白字元的情況下,用scanf最方便
如果既有空白字元,又可能越界的情況下,getchar最方便
㈤ C語言中什麼是字元,什麼是字元串啊,謝謝
C語言中單引號的是字元,雙引號的是字元串。
1、字元指類字形單位或符號,包括字母、數字、運算符號、標點符號和其他符號,以及一些功能性符號。字元在計算機內存放,應規定相應的代表字元的二進制代碼。代碼的選用要與有關外圍設備的規格取得一致。
2、字元串主要用於編程,概念說明、函數解釋、用法詳述見正文,這里補充一點:字元串在存儲上類似字元數組,所以它每一位的單個元素都是可以提取的。
它是編程語言中表示文本的數據類型。在程序設計中,字元串(string)為符號或數值的一個連續序列,如符號串(一串字元)或二進制數字串(一串二進制數字)。
(5)c語言用戶字元串擴展閱讀
C語言字元串的使用
用來存放字元的數組稱為字元數組,例如:
charc[10];
字元數組也可以是二維或多維數組。例如:
charc[5][10];
字元數組也允許在定義時進行初始化,例如:
charc[10]={'c','','p','r','o','g','r','a','m'};//c[9]未賦值,所以為默認值』 』
當對全體元素賦初值時也可以省去長度說明。例如:
charc[]={'c','','p','r','o','g','r','a','m'};
這時c數組的長度自動定為9。
字元數組和普通數組一樣,也是通過下標引用各個元素。
㈥ C語言編寫程序,要求用戶輸入字元串,程序判定字元串的真假,若為真則返回另一個值
單純判斷字元串,用strcmp函數比較兩個字元串,相同返回0。
要比較,首先需要有數據,像你舉例的,判斷輸入姓名,那麼首先要有一堆數據裡面存放了姓名班級等對應信息,這些信息可存放在資料庫或文件,也可直接放在數組及鏈表中。之後通過循環遍歷這些數據,將裡面的姓名分別和輸入的姓名比較,相同就輸出其具體信息。
㈦ c語言中如何輸入輸出字元串
在<string.h>頭文件中用字元串處理函數輸入和輸出,gest用來輸入,puts用來輸出。
字元串輸入函數gets,從鍵盤鍵入以回車結束的字元串放入字元數組中,並自動加』 '。輸入串長度應小於字元數組維數,字元串中可以包含空格。
字元串輸出函數puts,向顯示器輸出字元串(輸出完,自動換行,即用' '替'