當前位置:首頁 » 編程語言 » c語言用戶字元串
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言用戶字元串

發布時間: 2022-08-28 09:28:12

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,向顯示器輸出字元串(輸出完,自動換行,即用' '替'')。字元數組必須以''結束。

示例代碼如下:

#include<string.h>

int main()

{

char str[40];

printf("請輸入字元串");

gets(str);

printf("請輸出字元串");

puts(str);

system("pause");

return 0;

}

(7)c語言用戶字元串擴展閱讀

在C中,對文件的操作分為兩種方式,即流式文件操作和I/O文件操作。

流式文件操作,這種方式的文件操作有一個重要的結構FILE,FILE在頭文件stdio.h中定義如下:

typedef struct {

int level; /* fill/empty level of buffer */

unsigned flags; /* File status flags */

char fd; /* File descriptor */

unsigned char hold; /* Ungetc char if no buffer */

int bsize; /* Buffer size */

unsigned char _FAR *buffer; /* Data transfer buffer */

unsigned char _FAR *curp; /* Current active pointer */

unsigned istemp; /* Temporary file indicator */

short token; /* Used for validity checking */

} FILE; /* This is the FILE object */

直接I/O文件操作,這是C提供的另一種文件操作,它是通過直接存/取文件來完成對文件的處理,此類文件操作常用的函數及其所用的一些符號在io.h和 fcntl.h中定義,在使用時要加入相應的頭文件。

㈧ C語言 將用戶輸入的字元串中的所有數字提取出來

#include<stdio.h>

#include<math.h>

#include<stdlib.h>

intmain()

{

intz=0;

intt,i;

int*p;

intm=0;

ints=0;

chara[10];//輸入一個字元串到a[6]

printf("請輸入一個字元串 ");

scanf("%s",a);//輸入字元串

for(i=0;i<10;i++)//計算a[6]中的數字個數

{

if(a[i]>='0'&&a[i]<='9')

m++;

}

if(m==0)

printf("字元串中沒有數字 ");

p=(int*)calloc(m,sizeof(int));//動態數組

for(i=0;i<10;i++)

{

if(a[i]>='0'&&a[i]<='9')

{

*(p+s)=a[i]-48;

s++;

}

}

//組成新的整數

for(t=0;t<m;t++)

{

z+=(*(p+t))*pow(10,m-(t+1));//組成新的整數

}

printf("新組成整數:%d ",z);

free(p);

}

kuo

(8)c語言用戶字元串擴展閱讀

C語言實現將字元串的數字提取為整數

#include<stdio.h>

intStringToInteger(char*p)

{

intvalue=0;

while(*p!='')

{

if((*p>='0')&&(*p<='9'))

{

value=value*10+*p-'0';

}

p++;

}

returnvalue;

}

intmain(void)

{

char*str="112.123.156.1";

intval=0;

val=StringToInteger(str);

printf("value=%d ",val);

getchar();

return0;

}

㈨ C語言字元串

代碼功能:

1、輸入任意行數的內容(如果你想限制最多10行,自己加個變數計數好了)。

2、不想輸入時,新行直接回車,會刷新顯示統計個數。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
typedefstructstrs
{
charstr[100];
structstrs*next;
}STRS;
voidcontWord(char*str);//對字元串大小寫字母計數
voidintput(STRS**strsHead,STRS**strsTail);//輸入字元串,並顯示統計結果(每輸入完一行回車時,刷新數據)
voidprfStrs(STRS*strsHead,inttj);//列印字元串及統計結果
intdCon=0;//大寫字母計數
intnCon=0;//數字計數
intmain()
{
STRS*strsHead=(STRS*)malloc(sizeof(STRS));
strsHead->next=NULL;
STRS*strsTail=NULL;
intput(&strsHead,&strsTail);
return0;
}
voidprfStrs(STRS*strsHead,inttj)//tj=1輸出統計結果;tj=0不輸出統計結果
{
while(strsHead->next!=NULL)
{
printf("%s ",strsHead->next->str);
strsHead=strsHead->next;
}
if(tj==1)
{
printf("大寫字母個數:%d ",dCon);
printf("數字輸入個數:%d ",nCon);
}
}
voidcontWord(char*str)
{
intlen=strlen(str),i;
for(i=0;i<len;i++)
{
if(str[i]>='A'&&str[i]<='Z')
dCon++;
if(str[i]>='0'&&str[i]<='9')
nCon++;
}
}
voidintput(STRS**strsHead,STRS**strsTail)
{
STRS*strsNew;
charc;
while(1)
{
strsNew=(STRS*)malloc(sizeof(STRS));
memset(strsNew->str,0,100);
if(strsNew->str[0]==0)
{
c=0;
c=getchar();
if(c==' ')
{
system("cls");
prfStrs(*strsHead,1);
break;
}
else
{
strsNew->str[0]=c;
}
}


gets(&strsNew->str[1]);
strsNew->next=NULL;
if((*strsHead)->next==NULL)
(*strsHead)->next=strsNew;
else
(*strsTail)->next=strsNew;
*strsTail=strsNew;
contWord(strsNew->str);
}
}