1. 程式人生 > >snprintf和string操作函數

snprintf和string操作函數

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 strncat

char *strncat(char * s1,const char * s2.size_t n);

s2字符串中只有前n個字符被追加到s1字符串,復制過來的s2字符串的第一個字符覆蓋了

s1字符串結尾的空字符。s2字符串中包括s2[n]在內的字符都不會被復制,並且追加

一個空字符到所得結果後面。返回值是s1

snprintf和string操作函數