1.gets函數(shù)與puts函數(shù)
gets函數(shù)類似于scanf函數(shù),用于讀取標準輸入.前面我們已經知道scanf函數(shù)在讀取字符串時遇到空格就認為讀取結束,所以當輸入的字符串存在空格時,我們需要使用gets 函數(shù)進行讀取.
gets函數(shù)的格式如下:
char *gets(char *str);
gets函數(shù)從STDIN (標準輸入)讀取字符并把它們加載到str(字符串)中,直到遇到換行符(\n) .如下例所示,執(zhí)行后,我們輸入"how are you",共11個字符,可以看到gets 會讀取空格,同時可以看到我們并未給數(shù)組進行初始化賦值,但是最后有’\0’,這是因為gets遇到\n后,不會存儲\n,而是將其翻譯為空字符’\0’.
puts函數(shù)類似于printf函數(shù),用于輸出標準輸出.puts函數(shù)的格式如下:
int puts(char *str);
函數(shù) puts把 str(字符串)寫入STDOU(標準輸出). puts會將數(shù)組c中存儲的"how are you"字符串打印到屏幕上,同時打印換行,相對于printf函數(shù), puts只能用于輸出字符串,同時多打印一個換行符,等價于printf(%sin",c).
#include <stdio.h>
//gets一次讀取一行
int main()
{
char c[20l;
gets(c);
puts(c);
return 0;
}
執(zhí)行結果如圖:
how are you
how are you
2 str系列字符串操作函數(shù)(初試沒那么重要,對于機試更重要一些)
str系列字符串操作函數(shù)主要包括strlen. strcpy. strcmp、strcat等. strlen函數(shù)用于統(tǒng)計字符串長度, strcpy函數(shù)用于將某個字符串復制到字符數(shù)組中, strcmp函數(shù)用于比較兩個字符串的大小,strcat 函數(shù)用于將兩個字符串連接到一起.各個函數(shù)的具體格式如下所示:
#include <string.h>
size_t strlen(char *str);
char *strcpy(char *to, const char *from);
int strcmp(const char *str1, const char *str2);
char *strcat(char *str1, const char *str2);
對于傳參類型char*,直接放入字符數(shù)組的數(shù)組名即可.
接下來我們通過下例來具體學習str系列字符串操作函數(shù),掌握每個函數(shù)的內部實現(xiàn).
【例】str系列字符串操作函數(shù)的使用.
#include <stdlo.h>
#include <string.h>
int mystrlen(char c[]){
int i = O;
while (c[i++]);
return i -1;
}
/ / strlen統(tǒng)計字符串長度
int main() {
int len;//用于存儲字符串長度
char c[20];
char d[100] = "world";
gets(c);
puts(c);
len = strlen(c);
printf("len=%d\n",len);
len = mystrlen(c);
printf( "mystrlen len=%din", len);
strcat(c, d);
strcpy(d, c);//c中的字符串復制給d
puts(d);
printf("c?d %din", strcmp(c, d));
puts(c);
return O;
}
下圖所示為我們輸入"hello"后的執(zhí)行結果,通過strlen 函數(shù)計算的字符串長度為5,我們自己寫的函數(shù)就是strlen函數(shù)的計算原理,即通過判斷結束符來確定字符串的長度.
strcpy函數(shù)用來將字符串中的字符逐個地賦值給目標字符數(shù)組.例中我們將c復制給d,就是將c中的每個字符依次賦值給d,也會將結束符賦值給d.注意,目標數(shù)組一定要大于字符串大小,即sizeof(d)>strlen?,否則會造成訪問越界.
hello
hellolen=5
mystrlen len=5
helloworld
c?d 0
helloworld
strcmp函數(shù)用來比較兩個字符串的大小,由于字符數(shù)組c中的字符串與d相等,所以這里的返回值為0,如果c中的字符串大于d,那么返回值為1;如果c中的字符串小于d,那么返回值為-1,如何比較兩個字符串的大小呢?具體操作是從頭開始,比較相同位置字符的ASCII碼值,若發(fā)現(xiàn)不相等則直接返回,否則接著往后比較.例如,strcmp(“hello” ," how")的返回值是-1,即"“hello"小于"how”,因為第一個字符h相等,接著比較第二個位置的字符, e的ASCII碼值小于o的,然后返回-1.文章來源:http://www.zghlxwxcb.cn/news/detail-815816.html
strcat函數(shù)用來將一個字符串接到另外一個字符串的末尾.例中字符數(shù)組c中存儲的是
“hello”,我們將d中的"world"與c拼接,最終結果為"helloworld"。注意,目標數(shù)組必須大于拼接后的字符串大小,即sizeof?>strlen(“helloworld”).文章來源地址http://www.zghlxwxcb.cn/news/detail-815816.html
到了這里,關于【C語言基礎考研向】11 gets函數(shù)與puts函數(shù)及str系列字符串操作函數(shù)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!