今天我編了小程式以完成C語言中的字串連線函式「strcat」的功能,於是想到了指標來實現。但最後程式

時間 2021-08-30 11:20:57

1樓:匿名使用者

自己對照看一下。

main()

,b[15]=,*p=a,*q=b;

int i;

for(i=0;i<15;i++)

*(p+i+6)=*(q+i);

printf("%s\n%s\n",a,p);}

2樓:

首先你的printf("%s",a[22]);肯定報錯列印後面接陣列名,a[22]陣列訪問越界;

應該printf("%s\n",a);

還有你的"hoello!"有7位,你在傳值的時候*(p+i+6)=*(q+i); //i=0時,*(p+i+6)= "!",也就是說你把『!

』 這個字元覆蓋了,用一個strlen(a)就不用擔心這種問題了。

main()

;char b[15]=;

char *p=a;

char *q=b;

int i;

for(i=0;i<15;i++)

*(p+i+strlen(a))= *q++;

printf("%s\n",a);

printf("%s\n",p);}

我用c語言編了程式,問題和我的方案如圖,但是按回車卻什麼都不輸出,這是為什麼啊,請問哪裡錯了啊

因為題主在內層的第三個 while 迴圈,也就是 while p 1 中改變了全域性變數 i 的值,而 i 不僅是輸出結果,還是最外層 while 迴圈的計數器,所以這個值一旦被改變整個迴圈就會混亂,最後出現死迴圈,導致程式無限執行無法輸出結果。所以題主需要一個 i 的副本來完成上述迴圈,而不改變 ...

C語言中處處楊輝三角形的程式,C語言中處處楊輝三角形的程式

11 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252...

C語言中的小數問題,我看到書中有的程式用到除法時,如1 0 2 a b c ,分子是精確到小數點後一位

1.0 2 a b c 上式中的分子1.0並不是精確到小點後一位,而是告訴編譯器此處是浮點運算,而不是整數運算。如上式如果變成1 2 a b c 那麼首先在計算1 2時,編譯器將之看成是整數運算,這時,結果不是0.5,而是0,所以1 2 a b c 的結果為0 至於 b 2 a 其結果要看b和a兩個...