国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語(yǔ)言——字符串、打印字符串的三種方式

這篇具有很好參考價(jià)值的文章主要介紹了C語(yǔ)言——字符串、打印字符串的三種方式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

字符串(character string)是一個(gè)或多個(gè)字符的序列,空字符(null character)\0 標(biāo)記字符串的結(jié)束

字符串以數(shù)組(array)存儲(chǔ),也就是以空字符(\0)結(jié)尾的 char 類型數(shù)組

用 %s 轉(zhuǎn)換說(shuō)明來(lái)處理字符串的輸入和輸出

輸入和輸出必須給出字符串的首地址,可以直接是字符串常量、字符數(shù)組名,或者字符指針變量名

scanf() 輸入數(shù)據(jù)時(shí),要注意函數(shù)在讀到空格制表符換行符就會(huì)停止

一、字符串

C語(yǔ)言中,以數(shù)組來(lái)表示字符串

1.字符串常量

? 用一對(duì)雙引號(hào)包含的一個(gè)或多個(gè)字符的序列,在內(nèi)存中存放時(shí),以’\0’(空字符)標(biāo)記字符串的結(jié)束(\0是數(shù)值轉(zhuǎn)義字符,對(duì)應(yīng)的ASCII碼為數(shù)值0)

? 字符串不論什么情況,結(jié)尾都會(huì)自動(dòng)加一個(gè)’\0’

? 字符串一定以空字符結(jié)束,這意味著數(shù)組的容量必須至少比待存儲(chǔ)字符串中的字符多1,例如 char name[5]; 只能存儲(chǔ)4個(gè)字符,剩下一個(gè)字節(jié)留給空字符

2.注意 scanf() 讀取字符串

我們用 scanf() 輸入時(shí),要注意函數(shù)在讀到空格、制表符換行符就會(huì)停止,如“ab c”,只會(huì)讀取"ab"

例如,scanf() 輸入中間有空格的字符串后觀察打印情況

源代碼:

#include <stdio.h>
int main()
{
    char str[40] = { 0 };

    printf("請(qǐng)輸入:");
    scanf("%s", str);//不需要&,數(shù)組名就是首元素地址

    printf("輸出為:");
    printf("%s\n", str);

    return 0;
}

運(yùn)行結(jié)果:

c語(yǔ)言打印字符串,C語(yǔ)言,c語(yǔ)言,開(kāi)發(fā)語(yǔ)言

再來(lái)觀察一下數(shù)組內(nèi)的數(shù)據(jù):

c語(yǔ)言打印字符串,C語(yǔ)言,c語(yǔ)言,開(kāi)發(fā)語(yǔ)言

? 可以看到,用戶以 scanf() 函數(shù)輸入字符串"Hello world!"到字符數(shù)組str,但字符數(shù)組并沒(méi)有接收字符串中間空格之后的數(shù)據(jù),說(shuō)明 scanf() 在碰到空格就停止讀取了

3.sizeof()函數(shù)計(jì)算字符串尺寸,strlen()函數(shù)計(jì)算字符串長(zhǎng)度

strlen() 特點(diǎn):僅以’\0’為結(jié)束判斷,且不將’\0’算入內(nèi)

sizeof 和 strlen 運(yùn)算符的返回類型可以用 %zd 轉(zhuǎn)換說(shuō)明

例子:

源代碼:

#include <stdio.h>
#include <string.h>

int main()
{
    //sizeof():計(jì)算字符串尺寸
    printf(" %zd\n", sizeof("abc"));     //4
    printf(" %zd\n", sizeof(""));        //1
    printf(" %zd\n", sizeof("abc\0de")); //7
    printf(" %zd\n\n", sizeof("abc de"));  //7

    //strlen():計(jì)算字符串長(zhǎng)度
    printf(" %zd\n", strlen("abc"));     //3
    printf(" %zd\n", strlen(""));        //0
    printf(" %zd\n", strlen("abc\0de")); //3;計(jì)算字符串長(zhǎng)度遇到第一個(gè)'\0'截止
    printf(" %zd\n", strlen("abc de"));  //6
    return 0;
}

運(yùn)行結(jié)果:

c語(yǔ)言打印字符串,C語(yǔ)言,c語(yǔ)言,開(kāi)發(fā)語(yǔ)言

4.字符數(shù)組定義和初始化

(1)傳統(tǒng)的字符集合賦值(不推薦)

char str1[5]={'a','b','c','d','e'};        //全部賦值
char str2[5]={'a','b','c'};            //部分元素賦值
char str3[]={'a','b','c','d','e'};    //省略數(shù)組長(zhǎng)度賦值

那么,上面三個(gè)字符數(shù)組中存放的是字符串嗎?

char str1[5]={'a','b','c','d','e'};    //不是字符串
char str2[5]={'a','b','c'};        //未賦值的元素為'\0',因此是字符串
char str3[]={'a','b','c','d','e'};    
//省略數(shù)組長(zhǎng)度賦值,長(zhǎng)度根據(jù)字符的個(gè)數(shù)確定,不會(huì)自動(dòng)補(bǔ)充'\0',因此不是字符串

數(shù)組內(nèi)存中沒(méi)有’\0’就不是字符串

注意省略數(shù)組長(zhǎng)度賦值的情況,長(zhǎng)度根據(jù)字符的個(gè)數(shù)確定,不會(huì)自動(dòng)補(bǔ)充’\0’

總結(jié):用字符集合的方式賦值時(shí),養(yǎng)成習(xí)慣在末尾補(bǔ)充’\0’否則不是字符串

(2)字符串整體賦值

char str1[5]="abcd";//系統(tǒng)會(huì)自動(dòng)在后面加'\0',即 ch[4]='\0'
char str2[3]="abcde";//錯(cuò)誤,超出數(shù)組的長(zhǎng)度
char str3[5]="abcde";//錯(cuò)誤,超出數(shù)組長(zhǎng)度
    
char str4[]="abc";
//推薦,系統(tǒng)會(huì)自動(dòng)在后面加'\0',即 a[3]='\0',所以該數(shù)組的元素個(gè)數(shù)是 4 個(gè)

(3)字符指針

char* str = "Hello world!";

printf("%s\n", str);

二、打印輸出字符串的三種方式

? 輸入和輸出必須給出字符串的首地址,可以直接是字符串常量、字符數(shù)組名,或者字符指針變量名文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-679835.html

1.直接是字符串常量

printf("%s\n", "Hello world");

2.字符數(shù)組名

char str[]="Hello world";//字符數(shù)組名str即為字符串首地址
printf("%s\n",str);//注意打印字符串要用%s

3.字符指針變量名

char * ps1="Hello world";
printf("%s\n",ps1);
//字符串常量"Hello world"的首地址賦給字符指針變量 ps1,使 ps1 指向字符串首元素地址
char str[]="Hello world" ;
char *ps2=NULL;

ps2 = str;//數(shù)組名 str 即字符串常量首元素地址,賦給字符指針變量 ps2
printf("%s\n",ps2);

到了這里,關(guān)于C語(yǔ)言——字符串、打印字符串的三種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C++中求string類型字符串長(zhǎng)度的三種方法

    C++中求string類型字符串長(zhǎng)度的三種方法

    length()函數(shù)是string的內(nèi)置成員方,用于返回string類型字符串的實(shí)際長(zhǎng)度。 length()函數(shù)聲明: // 返回 string 長(zhǎng)度,單位字節(jié) size_t length() const noexcept; 示例1: size()函數(shù)與length()一樣,沒(méi)有本質(zhì)區(qū)別。string類剛開(kāi)始只有l(wèi)ength()函數(shù),延續(xù)了C語(yǔ)言的風(fēng)格。引入STL之后,為了兼容又加入

    2024年02月07日
    瀏覽(27)
  • js 把字符串轉(zhuǎn)成json對(duì)象的三種方法

    不管字符串是否含有轉(zhuǎn)義字符,都能轉(zhuǎn)換成 Json 對(duì)象 1, js自帶的eval函數(shù),其中需要添加小括號(hào)eval(\\\'(\\\'+str+\\\')\\\'); 2,new Function形式 3,全局的JSON對(duì)象 使用 這種方式限制稍微多一些,需嚴(yán)格遵守JSON規(guī)范,如屬性都需用引號(hào)引起來(lái),如下 name沒(méi)有用引號(hào)引起來(lái),使用JSON.parse所有瀏覽器

    2023年04月17日
    瀏覽(23)
  • C語(yǔ)言-print字符串打印-轉(zhuǎn)義字符妙用

    C語(yǔ)言-print字符串打印-轉(zhuǎn)義字符妙用

    這里有兩個(gè)有關(guān)打印的小知識(shí) 打印的字符串內(nèi)容由兩部分組成: 可見(jiàn)字符、轉(zhuǎn)義字符 ;各種字母、數(shù)字、以及空格,均屬于可見(jiàn)字符,“”等屬于轉(zhuǎn)義字符 舉例: 1.直接print里面打印內(nèi)容,內(nèi)容直接出現(xiàn) 2.這里想將一行字符串拆開(kāi)來(lái)展示,直接打印行不通 3.這里要用到轉(zhuǎn)義

    2024年02月16日
    瀏覽(85)
  • MySQL字符串轉(zhuǎn)數(shù)字三種方式

    MySQL字符串轉(zhuǎn)數(shù)字三種方式

    MySQL數(shù)據(jù)表t的c1列是varchar字符串類型,存儲(chǔ)如下記錄, 如果按照\(chéng)\\"T+數(shù)字\\\"中的\\\"數(shù)字\\\"排序,常規(guī)的操作order by c1,執(zhí)行是錯(cuò)誤的,實(shí)際上按照字符串的ASCII排序的, 如果順著想,字符串截取出\\\"T+數(shù)字\\\"中的\\\"數(shù)字\\\"排序, 還是不對(duì)的,因?yàn)楸举|(zhì)上,還是按照字符串進(jìn)行的排序, 針

    2024年02月09日
    瀏覽(30)
  • Java如何將字符串轉(zhuǎn)為數(shù)字int(三種方式)

    如何將java字符串轉(zhuǎn)換為數(shù)字 對(duì)知識(shí)永遠(yuǎn)只有學(xué)無(wú)止境。 第一種 第二種 第三種 注意:這三種的轉(zhuǎn)換區(qū)別在哪里呢?對(duì)知識(shí)應(yīng)該敬畏。 第一種是將字符串,轉(zhuǎn)換成一個(gè)數(shù)字的對(duì)象,兩個(gè)相同的數(shù)字進(jìn)行轉(zhuǎn)換。 結(jié)果:不相等 第二種:多次的解析,最終的得到結(jié)果,可以用 “

    2024年02月13日
    瀏覽(67)
  • 【C語(yǔ)言】三種方法實(shí)現(xiàn)字符串逆序函數(shù)

    【C語(yǔ)言】三種方法實(shí)現(xiàn)字符串逆序函數(shù)

    題目如下(示例): 代碼如下(示例): 代碼如下(示例): 函數(shù)和main函數(shù)原理一樣!這里不做過(guò)多的介紹! 代碼如下(示例): 代碼如下(示例): 注意: 這里的 tmp 和 len 的值可以通過(guò)調(diào)試來(lái)觀察變化! 如下圖! 這里是函數(shù)在一步一步調(diào)用,接下來(lái)是遞歸返回的階

    2023年04月19日
    瀏覽(27)
  • 【我愛(ài)C語(yǔ)言】詳解字符函數(shù)isdigit和字符串轉(zhuǎn)換函數(shù)(atoi和snprintf實(shí)現(xiàn)互相轉(zhuǎn)換字符串)&&三種strlen模擬實(shí)現(xiàn)

    【我愛(ài)C語(yǔ)言】詳解字符函數(shù)isdigit和字符串轉(zhuǎn)換函數(shù)(atoi和snprintf實(shí)現(xiàn)互相轉(zhuǎn)換字符串)&&三種strlen模擬實(shí)現(xiàn)

    ??個(gè)人主頁(yè) : @啊森要自信的主頁(yè) ?? 真正相信奇跡的家伙,本身和奇跡一樣了不起?。?歡迎大家關(guān)注??點(diǎn)贊??收藏??留言??希望看完我的文章對(duì)你有小小的幫助,如有錯(cuò)誤,可以指出,讓我們一起探討學(xué)習(xí)交流,一起加油鴨。 本小節(jié)我們將學(xué)習(xí)字符分類函數(shù),字符

    2024年02月04日
    瀏覽(33)
  • 【Java】HttpServlet類中前后端交互三種方式(query string、form表單、JSON字符串)

    【Java】HttpServlet類中前后端交互三種方式(query string、form表單、JSON字符串)

    在前后端的交互中,前端通過(guò)以下三種方式來(lái)與后端進(jìn)行交互?? ?query string ?form表單 ?JSON字符串 下面我們將書(shū)寫(xiě)這三種方式的后端代碼并進(jìn)行講解 QueryString即在url中寫(xiě)入鍵值對(duì),一般用doGet方法進(jìn)行交互 代碼如下? 用postman驗(yàn)證 ? ?form表單一般用doPost方法進(jìn)行交互 Jason是

    2024年01月19日
    瀏覽(23)
  • go語(yǔ)言將cmd stdout和stderr作為字符串返回而不是打印到控制臺(tái)

    從 golang 應(yīng)用程序中執(zhí)行 bash 命令,現(xiàn)在 stdout 和 stderr 直接進(jìn)入控制臺(tái): 如果 bash 命令太慢( killInMilliSeconds 參數(shù)),程序應(yīng)該保持其終止 bash 命令的能力。 希望 stdout 和 stderr 作為字符串變量從 runBashCommandAndKillIfTooSlow 函數(shù)返回,而不立即打印到控 制臺(tái),如何實(shí)現(xiàn)。 將輸出設(shè)

    2024年01月23日
    瀏覽(25)
  • C語(yǔ)言字符串的兩種定義方式

    C語(yǔ)言字符串的兩種定義方式

    C語(yǔ)言中 初始化一個(gè)字符串有兩種定義方式: 第一種為 char str[] = \\\"hello\\\"; 或者 char str[] = {\\\'h\\\',\\\'e\\\',\\\'l\\\',\\\'l\\\',\\\'o\\\',\\\'\\0\\\'}; 第二種為 char *str = \\\"hello\\\"; 兩種的區(qū)別如下: char str[] 將字符串定義為字符串變量 (可讀可寫(xiě))而 char *str 將字符串定義為字符串常量 (只讀) 程序運(yùn)行結(jié)果如下: ?

    2023年04月08日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包