@關(guān)于C語言函數(shù)返回char *類型的一些問題TOC
創(chuàng)新互聯(lián)是一家專業(yè)提供汝城企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計制作、做網(wǎng)站、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為汝城眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。關(guān)于C語言函數(shù)返回char *類型的一些問題以下是我在寫C語言中返回值類型為char *函數(shù)時遇到的一些問題,在參考了博客:https://blog.csdn.net/Xixo0628/article/details/119870914后修改代碼可成功運行。
題目輸入一個字符串,然后輸入兩個字符,輸出該字符串中從第一個字符匹配的位置到第二個字符匹配的位置的所有字符。通過返回字符指針的子函數(shù)實現(xiàn)。(從字符串的開頭搜索第一個字符,同時從字符串的末尾查找第二個字符。)輸入:programming r g,輸出:rogramming。
原代碼#include#includechar* subString(char str[50], char a, char b){int i = 0, j = 0, count1 = 0, count2 = 0;
char *newstr;
while(str[i] != '\0'){if(str[i] == a){ count1++;
}
if(str[i] == b){ count2++;
}
if(count1>=1 && count2<=2){ newstr[j] = str[i];
j++;
}
i++;
}
newstr[j] = '\0';
return newstr;
}
int main(){char str[50];
printf("Enter a string:");
gets(str);
char* res = NULL;
printf("Enter two char:");
char a,b;
scanf("%c %c",&a,&b);
res = subString(str,a,b);
printf("%s",res);
return 0;
}
運行結(jié)果
很奇怪,返回值不為0,無結(jié)果輸出
char* subString(char str[50], char a, char b){int i = 0, j = 0, count1 = 0, count2 = 0;
//此處添加了malloc
char *newstr = (char *)malloc(sizeof(char));
while(str[i] != '\0'){if(str[i] == a){ count1++;
}
if(str[i] == b){ count2++;
}
if(count1>=1 && count2<=2){ newstr[j] = str[i];
j++;
}
i++;
}
newstr[j] = '\0';
return newstr;
}
運行結(jié)果
成功!
當函數(shù)返回作為數(shù)組名的newstr之后,臨時字符數(shù)組的空間就會被釋放。之后又重新調(diào)用了新的函數(shù)printf,導(dǎo)致最終根據(jù)返回指針所輸出的結(jié)果變成了刷新后的值,而這個值幾乎可以認為是隨機的。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
分享標題:關(guān)于C語言函數(shù)返回char*類型的一些問題-創(chuàng)新互聯(lián)
文章鏈接:http://www.rwnh.cn/article42/ccicec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、面包屑導(dǎo)航、微信小程序、云服務(wù)器、網(wǎng)站策劃、搜索引擎優(yōu)化
聲明:本網(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)容