sscanf和sPRintf是用來處理字符串問題的利器,從構詞上它們可以看成是string+scanf / string+printf。
記錄sprintf & sscanf 之前,先來回顧一下printf & scanf: 如果想要從屏幕輸入int型變量n并將int型變量n輸出到屏幕上,寫法如下:
scanf(“%d”, &n); printf(“%d”, n);
事實上,上面的寫法可以表示成下面的樣子,其中screen表示屏幕:
scanf(screen, “%d”, &n); printf(screen, “%d”, n);
可以看出:
scanf的輸入其實是把screen的內容以%d的格式傳輸到n中(從左至右) printf的輸出則是把n以%d的格式傳輸到screen上(從右至左)
sscanf和sprintf與上面的格式是相同的,只不過把screen換成了字符數組(假設定義了一個char數組str[100]),如下所示:
sscanf(str, “%d”, &n); sprintf(str, “%d”, n);
下面舉例說明sscanf & sprinf的使用
/***sscanf的應用 */#include<stdio.h>int main(){ char str[100] = "2048:3.14,hello"; int INT; double DOUBLE; char STR[100]; sscanf(str, "%d:%lf,%s",&INT,&DOUBLE,STR); //切記不遺漏"&" printf("INT = %d, DOUBLE = %.2f, STR = %s/n",INT, DOUBLE, STR); return 0;}輸出結果:INT = 2048, DOUBLE = 3.14, STR = hello/***sprintf 的應用 */#include<stdio.h> int INT = 12; double DOUBLE = 3.1415; char STR[100] = "Good"; char str[100]; sprintf(str,"%d:%.2f,%s",INT, DOUBLE, STR); printf("%s",str); return 0;}輸出結果:12:3.14,Goodsscanf還支持正則表達式,這里不做討論。
參考自算法筆記。
新聞熱點
疑難解答