snprintf和string操作函數
阿新 • • 發佈:2017-10-02
string.h .html char s 必須 edittext 不同 get 打印 位置 首先,使用場景不同。除了snprintf之外,其他的都是用於兩個字符串之間進行比較、拷貝、拼接等操作的,而snprintf最主要是,要把一個用戶變量按照一個format打印到字符串中。
其次,函數參數類型不同。除了snprintf之外,其他的都是定長參數,而snprintf是接受變長參數的。
最後,定義位置也不同,除了snprintf位於stdio.h之外,其他的都是string.h中的。
因此,snprintf和其他的一定不是一類的,單從頭文件的劃分就能看出來。
snprintf();//
#include <stdio.h>
函數返回
若成功則返回欲寫入的字符串長度,若出錯則返回負值。
信息說明
strcpy() sprintf() strcat() 存在安全隱患, 其對應的安全版為:
strncpy() snprintf() strncat()
snprintf(s, 100, "%.*S", 3, "abcd");
s的值為abc
%.*s 表示有兩項, 第一項指定了長度,第二項則是%s的內容,所以取前三位
glibc的頭文件劃分絕大多數都很有講究。 strcpy //原型聲明:extern char *strcpy(char* dest, const char *src);
頭文件:#include <string.h> 和 #include <stdio.h>
功能:把從src地址開始且含有\0結束符的字符串復制到以dest開始的地址空間
說明:src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串。
返回指向dest的指針。
strncpy 安全版本for strcpy,沒有\0作為保證--string.h中僅有 strcat 將兩個char*連接,string.h cstring in C++ strtok char *strtok(char s[], const char *delim) 分割string以 delim strncatchar *strncat(char * s1,const char * s2.size_t n);
s2字符串中只有前n個字符被追加到s1字符串,復制過來的s2字符串的第一個字符覆蓋了
s1字符串結尾的空字符。s2字符串中包括s2[n]在內的字符都不會被復制,並且追加
一個空字符到所得結果後面。返回值是s1
snprintf和string操作函數