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 ...