其實題目挺簡單,就是字串連接,但我沒有用連接函式,我突發奇想,想試試用指標來做,結果居然成了,
這讓對指標一知半解的我有點驚奇,我嘗試著講講我不成熟的想法,請大佬們幫我分析分析,看看我的理解是否有哪些不對的地方。

下面是我的代碼
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
void main()
{
char a[1024],*c;
gets(a);
int len=0;
len=strlen(a);
c=&a[len];
gets(c);
puts(a);
}
我的想法就是:在第一次接受到字串a之后,不再設立一個新的字串b,而是利用指標c,
指標c的地址是:通過gets()后的a的結束處,應該會默認用'\0'替換掉'\n',而我就是將'\0'的地址
賦值給指標c,并且從指標c所指向的地址開始,繼續gets(),這相當于就是繼續在字符陣列a中進行
接受,并且接收到原來接收的字串的后邊,在最后用puts()統一列印出來,我不知道別人是否有
和我類似的方法,不過這個方法確實是我突發奇想想到的,嘗試著敲敲,沒想到真的實作了。
還請大佬們幫我看看,看看我對指標是否還有什么理解不夠的地方。拜托了!

@qzjhjxj @自信男孩
uj5u.com熱心網友回復:
呃我還有幾個問題:
1、定義了字符陣列后例如 char b[1024]; 如果不對其進行初始化,那么它的各元素的值是隨機值還是 '\0' ?
2、gets() 在對一個字串賦值之后是不是會默認在該字串末位加上 '\0' ?
3、puts() 列印結束的標志是什么?
望大佬們在百忙之中能夠解答一下小弟的疑惑。。。@qzjhjxj @自信男孩
uj5u.com熱心網友回復:
深入學習,腦洞大開是非常幸福的事情
uj5u.com熱心網友回復:
原型:char * gets ( char * str );
功能:通過標準輸入(stdin)讀入字符并存盤到C型別的字串,當檢測到換行符或者檔案結束符時停止讀入。換行符和檔案結束符不讀入字串中。'\0'自動添加到字串的最后。
int puts(const char *string)
功能
puts()函式用來向標準輸出設備螢屏輸出字串并換行。具體是把字串輸出到螢屏上,將‘\0’轉換為回車換行。
呼叫方式是:puts(str)。其中str是字串陣列名或者字串指標。實際上,陣列名就是指標。
1、puts()只能輸出字串,不能輸出數值或者進行格式轉換,即不能要求輸出格式增加空格、換行(指的是輸出內容的中間進行換行)等要求;
2、可以將字串直接寫入puts()。如:puts("hello world");
3、puts()和 printf的用法一樣,puts()函式的作用與陳述句“printf("%s\n",s);的作用相同。注意:puts在輸出字 符串后會自動輸出一個回車符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/273834.html
標籤:C語言
