一些錯(cuò)誤在注釋中說(shuō)明,將輸出1711717
成都創(chuàng)新互聯(lián)專(zhuān)注于中大型企業(yè)的做網(wǎng)站、成都做網(wǎng)站和網(wǎng)站改版、網(wǎng)站營(yíng)銷(xiāo)服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開(kāi)發(fā)的融合,累計(jì)客戶(hù)近1000家,服務(wù)滿(mǎn)意度達(dá)97%。幫助廣大客戶(hù)順利對(duì)接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運(yùn)用,我們將一直專(zhuān)注成都品牌網(wǎng)站建設(shè)和互聯(lián)網(wǎng)程序開(kāi)發(fā),在前進(jìn)的路上,與客戶(hù)一起成長(zhǎng)!
#include stdio.h
#include string.h
fun(char *w,int n)
{char t,*s1,*s2;
s1=w;//首地址,就是1
s2=w+n-1;//尾地址,就是7
while(s1s2)//當(dāng)s1小于s2時(shí),循環(huán)下去
{t=*s1++;
*s1=*s2--;
*s2=t;
}
/*
第一輪交換,是1734517,s1指向w[1],s2指向w[5]
第二輪交換,是1714717,s1指向w[2],s2指向w[4]
第三輪交換,是1711717,s1指向w[3],s2指向w[3]
*/
}
main()
{char p[]="1234567";
fun(p,strlen(p));//將指向1和指向7的地址傳送給fun函數(shù)
puts(p);
}
其實(shí)你這里主要問(wèn)題是不能接收到兩個(gè)輸入的
字符串
。
你這里的接受
規(guī)則
是輸入兩個(gè)字符串并用
,
號(hào)分隔,比如:abc,abc
但是這里就有一個(gè)問(wèn)題了!計(jì)算機(jī)怎么知道你輸入的,號(hào)是你輸入的第一個(gè)字符串的一個(gè)字符呢?還是你兩個(gè)字符串的分隔?
所以當(dāng)你輸入abc,abc的時(shí)候計(jì)算識(shí)別你的第一個(gè)字符串是abc,abc
第二個(gè)字符串為\n
所以你這里得到的始終是1
至于解決的辦法:
讓計(jì)算機(jī)識(shí)別你的分隔
符號(hào)
那方法就很多了,比如
scanf("%s%s",a,b);輸入的時(shí)候用空白符(
空格
,tab,回車(chē)鍵)相間隔
你這個(gè)是字符串倒序的函數(shù),start指向的是string的地址,所以當(dāng)string里面的值改變的時(shí)候,strat的值也會(huì)改變,再然后不是start前面加了最后一個(gè)字的字符,而是最后一個(gè)字符跟第一個(gè)字符互換了位置,第二個(gè)跟倒數(shù)第二個(gè)互換位置,以此類(lèi)推。
strcmp是比較兩個(gè)字符串大小的。
最簡(jiǎn)單和最容易想到的方法如下:
遍歷字符串s,將s的每一個(gè)字符和字符串r的每一個(gè)字符進(jìn)行比較,相等則替換,同時(shí)替換次數(shù)加1,然后開(kāi)始下次比較??创a吧!
#include stdio.h
int strrepl(char *s, char *r, char c) {
int rep_times = 0;
char *r_temp;
//
// 遍歷被替換的字符串s
//
while ( *s != '\0' ) {
//
// 遍歷要替換的字符串r
//
r_temp = r;
while ( *r_temp != '\0' ) {
//
// 判斷是否找到要替換的字符
//
if ( *s == *r_temp ) {
*s = c;
rep_times++;
break;
}
r_temp++;
}
s++;
}
return rep_times;
}
int main(void) {
char s[] = "code(1.2)";
char r[] = "().";
char c = '_';
int rep_times;
printf("原始字符串: %s\n替換的字符: %s\n用\'%c\'替換\n", s, r, c);
rep_times = strrepl(s, r, c);
printf("替換之后的字符串: %s\n替換次數(shù): %d\n", s, rep_times);
return 0;
}
運(yùn)行結(jié)果圖
#includestring.h??//?導(dǎo)入頭文件string.h
#includestdio.h???//?導(dǎo)入頭文件stdio.h
char?*fun(char?*t)??//?定義函數(shù),?名稱(chēng)fun,?輸入?yún)?shù)為char?*,?返回值為char?*
{
char?*p?=?t;????//?把t的值賦值給p,?相當(dāng)于p指向與t相同的字符串
return?p?+?strlen(t)?/?2;???//?strlen返回值為字符串長(zhǎng)度,?然后p位移其一半(向下取整)的距離并返回值
}
int?main(int?argc,?char?*argv[])
{
char?*str?=?"abcdefgh";?//?str指向字符串“abcdefgh”
str?=?fun(str);?????????//?str調(diào)用fun函數(shù),?參數(shù)為str,?并將返回值賦值給str
puts(str);??????????????//?此時(shí)str指向e,?輸出為“efgh\n”
return?0;
}
網(wǎng)站名稱(chēng):c語(yǔ)言中指針字符串函數(shù) c語(yǔ)言的函數(shù)指針
網(wǎng)站URL:http://aaarwkj.com/article30/hhhsso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作、App開(kāi)發(fā)、自適應(yīng)網(wǎng)站、全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容