題目:有一段文本,將文本中的所有單詞,存放到一個字符指針數(shù)組中(要求每個單詞內(nèi)存恰好)。
創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,專業(yè)領(lǐng)域包括做網(wǎng)站、成都做網(wǎng)站、電商網(wǎng)站制作開發(fā)、微信小程序開發(fā)、微信營銷、系統(tǒng)平臺開發(fā),與其他網(wǎng)站設(shè)計及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!第一種做法
char c[] = " asd afil kjgl rip kjgdr gds sdg gs ";
char b[10] = {0};
char *a[10] = {NULL};
int i = 0, j = 0,k = 0; //i使字符不斷后移,j用來標(biāo)識指針a,k用來標(biāo)識中間字符數(shù)組b;
while (1) {//把字符串的'\0' 作為if判斷的條件,避免遇到\0不在判斷
if (c[i] != ' ' && c[i] != '\0') {
b[k++] = c[i++];
continue; //提高效率,當(dāng)進行此if判斷時,就不在進行一下if判斷
}
if ((c[i] == ' ' || c[i] == '\0') && k != 0) {
//k判斷是否有字符賦給b數(shù)組,沒有的話意味著前面是空空格,就不在需要進行判斷,提高運行效率
b[k] = '\0'; //給數(shù)組b加上\0 ,結(jié)束字符
a[j] = malloc(strlen(b) + 1); //為指針開辟空間
strcpy(a[j], b); //b是首地址,a[j]也是首地址,函數(shù)具有復(fù)制功能,如:%s
k = 0;
j++;
}
if (c[i] == '\0') { //把while中的\0判斷移到可以先判斷\0的情況
break;
}
i++;
}
for (int i = 0 ; i < j ; i++ ) {
printf("%s\n", a[i]); //int a = 10; int *b = null; b = &a; *b = 10;
free(a[i]); //* 具有指向功能,
a[i] = NULL;
}
第二種做法
char str[] = " a41 a1421 b3511 b b c c c c dddddd jkthku";
//2.如何存儲一個單詞?
char tempStr[20] = {0}; //存儲文本中的一個單詞
//3.如何存儲堆區(qū)空間的地址?
char *p[255] = {0};
//4.如何查找單詞,并且將對應(yīng)的單詞存放到臨時數(shù)組中?
int i = 0; //標(biāo)識str字符串中字符的下標(biāo)
int j = 0; //標(biāo)識tempStr字符串中字符的下標(biāo)
int k = 0; //標(biāo)識指針數(shù)組中元素的下標(biāo).
while (1) {
if (str[i] != ' ' && str[i] != '\0') {
//當(dāng)獲取到的元素不為空格時,將它存儲到臨時數(shù)組tempStr中.
tempStr[j++] = str[i];
} else if (j != 0) {
//當(dāng)遇到空格,或者遇到\0時.單詞的存放結(jié)束
tempStr[j] = '\0'; //最后一個元素補上\0
//動態(tài)計算所需堆區(qū)空間的大小,將地址存放到對應(yīng)的字符指針數(shù)組元素中
p[k] = malloc(strlen(tempStr) + 1);
//將臨時數(shù)組tempStr中字符串拷貝到對應(yīng)堆區(qū)空間上.
strcpy(p[k], tempStr);
k++;
j = 0; //存儲下一單詞時,又從數(shù)組的第一個字符開始.
}
//當(dāng)讀取到\0時,字符串讀取完畢,跳出循環(huán)
if (str[i] == '\0') {
break;
}
i++; //移動到str數(shù)組中的下一個元素
}
for (int i = 0; i < k; i++) {
printf("%s ", p[i]);
free(p[i]);
p[i] = NULL;
}
第三種做法
char str[50] =" qwo shi shui nishi hhdj";
char temp[20] = {0};
char *p[10] = {0};
int count = 0;
int d = 0,i = 0,index = 0,h = 0;
while (str[i] != '\0') {
if (str[i] != ' ') {
count ++;
i ++;
index = i - count;
}
if (str[i] == ' ' || str[i] == '\0' ){
if (count != 0) {
int k = 0;
for (int j = index; j < i;j ++) {
temp[k] = str[j];
k ++;
d = k;
}
temp[k] = '\0';
printf("%s\n",temp);
p[h] = malloc(count + 1);
strcpy(p[h], temp);
h ++;
count = 0;
}
i ++;
}
}
for (int i = 0; i < h; i ++) {
printf("%s ",p[i]);
free(p[i]);
p[i] = NULL;
}
第四種做法
char a[] = " The end of the World Cup does not mean the end of international competition in Brazil this year";
char *p[100] = {0}; //記錄單詞
char temp[100] = {0}; //臨時記錄單詞
int i = 0; //記錄a[]數(shù)組元素的位置
int j = 0; //記錄單詞的個數(shù)
int k = 0; //記錄temp[]數(shù)組中臨時單詞的字母個數(shù)(元素位置)
int count = 0;
while (a[i] != '\0') {
if ((a[i] >= 'a' && a[i] <= 'z') || (a[i] >= 'A' && a[i] <= 'Z')) {
count++;
temp[k] = a[i];
k++;
} else if (k != 0) {
temp[k] = '\0';
k = 0;
p[j] = malloc(sizeof(char) * count + 1);
strcpy(p[j], temp);
printf("%s ", p[j]);
free(p[j]);
p[j] = NULL;
j++;
count = 0;
}
if (a[i + 1] == '\0' && a[i] != ' ') {
temp[k] = '\0';
k = 0;
p[j] = malloc(sizeof(char) * count + 1);
strcpy(p[j], temp);
printf("%s ", p[j]);
free(p[j]);
p[j] = NULL;
}
i++;
}
over
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享名稱:動態(tài)分配內(nèi)存輸出文本中的單詞的四種做法-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://www.rwnh.cn/article40/iiheo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站維護、網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、云服務(wù)器、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容