如何封裝C語言的字串相關功能

時間 2025-07-28 12:20:09

1樓:網友

c語言是沒有慧御類的,因此,沒有封裝的概念,估計你說的是c++,對於c++,一般封裝字串相關功能知咐可以按下列內容和步驟,但不限於下列內容:

1)先定搭碧純義1個資料結構可以用來表達乙個字串實體,如乙個字串指標,一定長度的字元陣列(適合長度限制在某個值的情況),或由乙個指標及長度組成的結構或更復雜的資料連結串列等。

2)基於上面的資料結構定義1個封裝類,這個類需要定義1些不同引數的構建函式,可以滿足不同型別資料初值的初始化,如:初值是個字串、初值是個整數、初值是個浮點數等;

3)定義和實現這個類的操作符和比較符,一般字串的操作符至少包括 +(2個字元連線成乙個新串),+2個字串連線後,賦予符號左邊的實體),=複製),比較符可以是全部如:>、

4)定義這個類的型別轉換符,一般至少包括double,int

5)定義這個類的一些常用函式,如左右擷取,取長度,查詢子串等。

具體你可以參考atl 或c++ 中標準string類的定義。

如果你確定問的是c語言,那麼不支援功能封裝。

2樓:網友

如何梁山封裝,c字串的相關功能 strcpy strcat、 strlen strstr strcmp strncpy 自己實現其實還是不猜則難的,多動手敲**,穗渣棚不懂的話 、谷歌、問人。

在純c語言裡的字串怎樣能更好地封裝和管理記憶體,像c++一樣

3樓:網友

在純c 的環境中,沒有c++類的封裝處理。記憶體的分配和釋放只能靠自己來進行。就是在c++的類中,也是要同樣的要自己管理內在的申請和分配的,只不過你可以在類的構建和析構中書寫,方便一點而已。

記憶體的使用原則:

1,誰申請,誰釋放。

2,使用前要判斷指標是否有效。

3,釋放後要對指向記憶體的指標賦值為null。

另外:free(),malloc()效率 不低。

4樓:網友

記憶體分配在c裡面的確是沒辦法的了。只能靠你自己分配。所以說為什麼c++的stl是安全的就是如此。

它的string類非常安全,自動為你分配和釋放記憶體。這一切的工作原理都不用擔心。所以為什麼c++比c好就是這個原因。

5樓:網友

自己實現乙個記憶體管理吧。。

可以先申請一大塊記憶體。然後自己定義結構管理起來吧。

c語言如何封裝乙個帶有可變引數的方法?

6樓:網友

需要借用c語言的va_list 巨集定義,及相關操作來實現可變引數。

va_list 所在標頭檔案:#include ,用法如下:

1)首先在函式里定義一具va_list型的變數,這個變數是指向引數的指標;

2)然後用va_start巨集初始化剛定義的va_list變數;

3)然後用va_arg返回可變的引數,va_arg的第二個引數是你要返回的引數的型別(如果函式有多個可變引數的,依次呼叫va_arg獲取各個引數);

4)最後用va_end巨集結束可變引數的獲取。

以下是乙個自定義列印介面的實現:

int my_printf(const char *fmt, .//...表示引數可變。

7樓:網友

第一,c裡沒有方法,只有函式。

第二,可以使用vsprintf來代替sprintf

用c語言程式,通過自定義函式實現字串處理函式strcat、 strcpy、strcmp、strlen和的功能

8樓:網友

我自己做的。

strlen

strcpy

strcat

過程:abcd→abcde→abcdef【strcmp

charch1[20]="abc",ch2[20]="acd";

int i;

for(i=0;ch1[i]==ch2[i];i++)//比較到不同的那位。

if(ch1[19]=ch2[19])//如果全相同,則相等printf("ch1=ch2");

if(ch1[i]>ch2[i])//不同的那位比大小printf("ch1>ch2");

else if(ch1[i]

9樓:網友

strcat(char *p1,char *p2,char *p)while(*p2)

p='\0'; //為str3結尾加上'\0'

這個是strcat是3個形參的,兩個形參的是這樣寫的void strcat(char *p1, char *p2)while(*p2)

p1 = '\0';

注意 p1開的陣列要比p2大哦。

int strlen(char *p1)

strcpy(char *p1, char *p2)} strcmp(char *p1, char *p2)if(*p1> *p2)

return 1;

else if(*p1< *p2)

return -1;

return 0;}

如何用c語言實現動態的字串陣列

10樓:金色潛鳥

分成取數字與取非數字2個函式較簡單。get_v()取數字, get_o()取非數字。

#include

char *get_v(char *a, char *b);

b[i]='\0';

strcpy(a,a+i);

return b;

char *get_o(char *a, char *b);

b[i]='\0';

strcpy(a,a+i);

return b;

int main()

return 0;}

11樓:網友

**我沒有細看,但是你可以單步除錯,看看每一步執行的結果,跟你想的是否一樣,這樣才能真正學好程式設計來。

c語言中對字串的操作

12樓:網友

strcpy:char*strcpy(char *s1,char *s2)功能:把s2指向的串複製到s1指向的空間 返回值:s1所指位址。

strlen:unsigned int strlen(char s)功能:求字串s的長度 返回值:s長度。

strcat:char*strcat(char *s1,char *s2)功能:把s2接到s1的後面 返回值:s1所指位址。

strcmp:char*strcmp(char *s1,char *s2)功能:對s2和s1所指字元進行比較 返回值:s1s2,返回正數。

這麼詳細應該看得懂把?沒看到證明你c還沒學好,哈,希望幫到你了。

c語言中怎樣交換兩個字串

13樓:網友

c語言中交換兩個字串需要藉助strcpy函式或者使用自定義交換函式進行交換。

如交換a,b陣列中的字串**:

char a[10] = "abed", b[10] = "efg", t[10];

strcpy(t, a);//a複製給t

strcpy(a, b);//b複製給a

strcpy(b, t);//t複製給b

附:strcpy函式詳情。

原型宣告:char *strcpy(char* dest, const char *src);

標頭檔案:#include 和 #include

說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。返回指向dest的指標。

14樓:網友

它與簡單變數的交換方法相同,但是字串。

的傳遞是通過系統函式實現的。例如:

char str1[20]=,str2[20]=, temp[20];

strcpy(str1,temp); strcpy(str2,str1); strcpy(temp,str2);

strcpy 函式功能是字串複製,將第乙個引數指定的字串複製到第二個引數指定的位置。

兩個引數都是字串首位址。

使用strcpy需要 #include

希望能幫助你!

15樓:網友

字串a,與字串b交換。這樣。

char *c;

strcpy(c,a);

strcpy(a,b);

strcpy(b,c);

成功交換。如果不用庫函式,那麼也好辦。

自己寫個串拷貝函式。

str_cpy(char *a,char *b) //假設是將b拷貝到a中,注意不是交換。

while(*b!='\0') //如果字串b未結束。

a++)=*(b++)//一位位覆蓋進去a='\0';//加上結束標誌。

將上面的strcpy替換成這個函式 也成。

測試成功。那麼整個程式可以這麼寫。

void str_cpy(char *a,char *b) //假設是將b拷貝到a中,注意不是交換。

while(*b!='\0') //如果字串b未結束。

a++)=*(b++)//一位位覆蓋進去a='\0';//加上結束標誌。

void swap(char *a,char *b)char *c;

str_cpy(c,a);

str_cpy(a,b);

str_cpy(b,c);

int main()

char *str1="123456",*b="654321"

swap(str1,str2);//完成交換。

return 0;

16樓:網友

樓上的不對,字串不能這樣交換的。

要用字串函式。

需新增標頭檔案#include ""

void main()

char a[5]="abcd";

char b[5]="dcba";

char c[6];

strcpy(c,a);

strcpy(a,b);

strcpy(b,c);字串複製函式,將後面的複製到前面那個字串。

17樓:匿名使用者

這個我知道的,但我想知道如何利用**去交換兩個字串。

C語言字串問題,C語言字元陣列與字串問題

字串初始化,如果逐個賦值的話,系統不是會自動新增 0 嗎不是。圖一就是長度為4的陣列,圖二長度為5圖三會是新增 0,但是是會把後面所有的都設為 0因為圖一和圖四不以 0結尾,所以不能用strlen和strcmp,會越界 圖四也可以用char str 4 stop 這樣賦值。如果不手動加長度就會是5了...

c語言字串問題

首先字串定義是 char c 用指標 而不是char c 這樣是單個字元定義了。其次字串賦值要加上雙引號 即c 0326 最後輸出用s d 是整型輸出了。0362是8進位制數 以0開頭 轉化為十進位制是242。char 佔一個位元組 型別的範圍是 128 127,242超過了char的表達範圍。所以...

C語言字串問題

1全部char xx 50 80 是一個二維字元陣列,長度50 80個連續char空間。char tem 80 是一個一維字元陣列,長度80個連續char空間。c語言不存在字串變數型別,所有字串全部用 0結尾字元陣列表示。比如說 char a china 圖示為a0,a1,a2,a3,a4 c,h ...