本文目錄一覽:
c語言,sscanf的用法問題,急!
從你的sscanf語句來看,每個字段的數據都應該是有長度限定的,那麼當你的數據為空時,就必須有佔位符才行,例如空格等。
sscanf再使用[
]作為格式化佔位符的時候,原文定義的第一句話是這麼寫的:
[
Matches
a
nonempty
sequence
of
characters
from
the
specified
set
of
accepted
characters
其中的nonempty
sequence意思就是,不為空的序列,因此,sscanf在這裡就無法滿足你的需求。
正常情況下,對於此種情況,我們一般會採用特殊符號加空格的形式對數據進行分隔,而你的數據源又是來自於csv文件,所以我建議你首先對數據進行格式化,然後再進行解析,首先保障了數據的合法有效性以後,再解析就不會有問題了
關於c語言中sscanf的用法不懂,求指教
#include stdio.h
#include stdio.h
#include string.h
#include stdlib.h
int main(void)
{
char put_in[102], put_out[102], temp[102];
char temp1[3],temp2[3],temp3[3],temp4[3];
while(1)
{
scanf(“%s”, put_in);
getchar();
sscanf(put_in, “%[^.].%[^.].%[^.].%[^.]”, temp1,temp2,temp3,temp4);
if( (atoi(temp1)=255atoi(temp1)=0)(atoi(temp2)=255atoi(temp2)=0)
(atoi(temp3)=255atoi(temp3)=0)(atoi(temp4)=255atoi(temp4)=0) )
{
printf(“YES\n”);
}
else printf(“NO\n”);
printf(“put_in = %s %s.%s.%s.%s\n”, put_in, temp1,temp2,temp3,temp4);
}
return 0;
}
C語言 sscanf() 用法
C語言函數sscanf()的用法sscanf() – 從一個字符串中讀進與指定格式相符的數據.函數原型:int sscanf( string str, string fmt, mixed var1, mixed var2 … );int scanf( const char *format [,argument]… );說明:sscanf與scanf類似,都是用於輸入的,只是後者以屏幕(stdin)為輸入源,前者以固定字符串為輸入源。其中的format可以是一個或多個 {%[*] [width] [{h | l | I64 | L}]type | ‘ ‘ | ‘\t’ | ‘\n’ | 非%符號}註:1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星號 (*) 表示跳過此數據不讀入. (也就是不把此數據讀入參數中)2、{a|b|c}表示a,b,c中選一,[d],表示可以有d也可以沒有d。3、width表示讀取寬度。4、{h | l | I64 | L}:參數的size,通常h表示單位元組size,I表示2位元組 size,L表示4位元組size(double例外),l64表示8位元組size。5、type :這就很多了,就是%s,%d之類。6、特別的:%*[width] [{h | l | I64 | L}]type 表示滿足該條件的被過濾掉,不會向目標參數中寫入值支持集合操作:%[a-z] 表示匹配a到z中任意字符,貪婪性(儘可能多的匹配)%[aB’] 匹配a、B、’中一員,貪婪性%[^a] 匹配非a的任意字符,貪婪性注意:在讀入的字符串是空字符串時,sscanf函數並不改變待讀入到的字符串的值。
c語言中關於sscanf函數的運用及%n的用法
代碼如下:
#includestdio.h
#includestring.h
int main (){
char s[200];
int n,wei;
memset(s,0,sizeof(s));
while(gets(s)){
int cnt=0,sum=0,num;
char *p=s;
while(sscanf(p,”%d%n”,n,wei)==1){
sum+=n;cnt++;wei++;
if(p) p+=wei;
}
printf(“%d %d\n”,cnt,sum);
memset(s,0,sizeof(s));
}
return 0;
}
擴展資料
scanf()函數是通用終端格式化輸入函數,它從標準輸入設備(鍵盤) 讀取輸入的信息。可以讀入任何固有類型的數據並自動把數值變換成適當的機內格式。
scanf()函數返回成功賦值的數據項數,出錯時則返回EOF。
其控制串由三類字符構成:
1、格式化說明符;
2、空白符;
3、非空白符;
用空白符結尾時,scanf會跳過空白符去讀下一個字符,所以必須再輸入一個數。這裡的空白符包括空格,製表符,換行符,回車符和換頁符。所以如果用scanf(“%d “,a)也會出現同樣的問題。
原創文章,作者:FTZAA,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/329452.html