scanf返回值是什么
2023-06-05 17:28:58 閱讀(266)
gets和scanf有什么區(qū)別?
都是從輸入流中讀取數(shù)據(jù),但功能有很大差別: 1 操作類型不同。gets函數(shù)僅用于讀入字符串。scanf為格式化輸出函數(shù),可以讀入任意C語(yǔ)言基礎(chǔ)類型的變量值,而不是僅限于字符串(char*)類型。 2 截止字符不同。gets函數(shù)固定的以換行符作為結(jié)尾,遇到換行符時(shí)結(jié)束輸入。scanf函數(shù)默認(rèn)以空白函數(shù)結(jié)尾,同時(shí)可以對(duì)截止函數(shù)進(jìn)行修改。 3 對(duì)截止字符處理不同。gets函數(shù)會(huì)讀入截止字符\n, 同時(shí)將\n自動(dòng)替換為\0.scanf遇到截止字符時(shí)不會(huì)繼續(xù)讀取,截止字符將存儲(chǔ)于輸入緩沖中。 4 返回值類型不同。gets的返回值為char*型,當(dāng)讀入成功時(shí)會(huì)返回輸入的字符串指針地址,出錯(cuò)時(shí)返回NULL。scanf返回值為int型,返回實(shí)際成功賦值的變量個(gè)數(shù),當(dāng)遇到文件結(jié)尾標(biāo)識(shí)時(shí)返回EOF。
scanf返回值為什么是1?
scanf返回值是1是因?yàn)檩斎肓艘粋€(gè)數(shù)。 需要注意的是,scanf返回值不一定都是1,其返回值等于輸入的數(shù)據(jù)的個(gè)數(shù)。 一般我們輸入一個(gè)整數(shù),一個(gè)浮點(diǎn)數(shù),或者一個(gè)字符,甚至一個(gè)字符串,返回值都是1,這是因?yàn)槲覀冎贿M(jìn)行了一次輸入,一次賦值。 如果同一個(gè)scanf輸入了n次,返回值就是n,而不再是1。
sscanf返回值為1是什么意思?
sscanf返回值為1表示讀到了一個(gè)有效數(shù)據(jù),sscanf()的返回為讀有有效數(shù)據(jù)的個(gè)數(shù)!例1:charstr[]="124abc";inta=0,b=0;sscanf(str,"%d%d",&a,&b);//想讀入兩個(gè)整數(shù),但是串中只有一個(gè)數(shù)值123,另一個(gè)不是數(shù)值(abc),這時(shí),讀入的有效數(shù)據(jù)只有一個(gè)a=123,而b沒(méi)有讀到有效數(shù)據(jù),因此,返回值為1例2:charstr[]="124abc";chara[10],b[10];sscanf(str,"%s%s",a,b) ;//這時(shí)會(huì)讀到兩個(gè)字符串,a="123",b="abc"函數(shù)返回值為2
未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明出處