一道關於strcpy函式用法的c語言題目

2021-12-27 18:29:21 字數 3233 閱讀 3290

1樓:匿名使用者

選bstrcpy(char *dst,char *src)的功能是將src字串複製到dst內,並在最後加'\0'。

str1的長度為7,內容為"string\0"。

str2[5]的長度為5,內容未知。

"hello"的長度為6,內容其實為"hello\0"

顯然,str2不夠長,而str1可以。

2樓:匿名使用者

選 b,

str1 是字元陣列,它的長度是 strlen( "string") + 1 = 7 個位元組;

str2 也是字元陣列,它的長度是 5個位元組。

"hello" 的長度其實是6個位元組,因為包含字串結束標誌 '\0', 所以

strcpy(str2, "hello"); 中的 str2 需要 6 個位元組,而str2 只有 5 個位元組,所以 a 是錯誤的。

同理可推, b 是對的。

3樓:

這個問題可以這樣想:

1、strcpy( char *s1,constchar *s2)函式中必須保證s1指向的陣列的容量足夠大,以容納s2的內容

2、"hello"的字串長度應為6(因為系統會自動字串的末尾新增一個字串結束標誌‘\0’)

3、由題意可知:str1的長度為6+1=7(string是6個字元,'\0'一個字元)

所以,由5<6<7知,只有b是對的

4樓:匿名使用者

b是正確的。

str2[5];分配了五個字元的空間,因為字串會自動在結尾處補'\0'字元,所以,實際可用空間為四個,不能存放hello,如果存放,會造成記憶體溢位。

str1 = "string"; 系統會分配str1七個字元的空間。但str1不是常量,可以對其進行內容修改。

5樓:擺個渡

ba 選項陣列長度需加1

6樓:匿名使用者

b “hello”有6個字元,hello後面有個結束符,所以str[5]不行

7樓:匿名使用者

b a的“要修改為"

c語言strcpy()函式和指標的題目

8樓:匿名使用者

strcpy(char a*, char b*)的作用,簡單講就是給你兩個記憶體起始地址(你可以將它們想象成給了你兩排箱子,每個箱子都有編號,比如第一排的編號是0,1,2,3,4,第二排的編號是7,8,9,則a,b分別就是這兩排箱子的起始編號),將以b開始的記憶體地址中的資料複製到以a開始的記憶體地址中(就是將箱子7中的東西複製到箱子0,將箱子8中的東西複製到箱子1,...)。因為a要容納b的所有資料,所以分配給a的記憶體數量必須大於等於分配給b的記憶體數量(大於意味著a的記憶體沒裝滿,有富餘空間),即第一排箱子的數量要大於第二排的。

具體到你的問題,箱子的數量就是分配給陣列或字元指標的記憶體位元組數。str1和str4都分配了9個位元組,因為把字串分配給char陣列(陣列的大小沒由你顯式指定時才這樣)或char指標時,會比字串的實際長度多分配1個位元組,以容納'\0'字元,str2是8個位元組(8是顯式指定的),而str3一個位元組也沒分配,所以不能把"hell03"複製給str3,因為要裝下"hell03",需要至少7個位元組('\0'也要一個位元組)。

9樓:

strcpy(char *, char *)函式表示將第二個引數開始的字串拷貝到第一個引數的字串位置。故strcpy (a+1, b+2) 表示將b[2]開始的字串複製到a[1]開始的字串中,即a陣列變為“a2”。 strcat(char *, char *)函式表示將第二個引數開始的字串接到第一個引數開始的字串上,返回第一個字串的指標。

故strcat(a,c+1)表示將c[1]開始的字串接到“a2”後面,a陣列變成“a2yz”。

10樓:oo靈兒

str3定義了但是沒有初始化,你可以理解成起了個名字但是沒有分配記憶體,所以不能進行復制字串操作

11樓:匿名使用者

a 不用說肯定是對的。

b str3的值是一個無效的指標,無疑是錯的。

c str4 指向的是一個字串常量,通常情況下是能修改的,按照這種情況是錯的。但也有你例外,不同的平臺也有可能字串也是可以修改的。按照這種情況就是對的。

所以 c 的對錯是看情況的。

b 肯定是不對的。

c語言中strcpy函式怎麼用?看題

12樓:

您好,輸出結果為“a2yz”。

程式**:

分析:

strcpy(a+1,b+2)相當於將a[1]及它後面的內容複製為b[2]及它後面的內容。b[2]及後面為“2”,因此複製後a為“a2”;

strcat(a,c+1)相當於在a的末尾加上c[1]及其後面的部分,也就是“yz”。故執行後a為“a2yz”

拓展資料:

strcpy把從src地址開始且含有'\0'結束符的字串複製到以dest開始的地址空間,返回值的型別為char*。

strcat把src所指向的字串(包括“\0”)複製到dest所指向的字串後面(刪除*dest原來末尾的“\0”)。

13樓:匿名使用者

strcpy(a+1,b+2);

把 b[2]開始的字串拷貝到 a[1]開始的地址中。

這時 a 中的字串改變為 "a2"

然後將 c[1]開始的字串拼接到a 中

此時 a中的字串變為 a2yz;

14樓:匿名使用者

strcpy 將第二個拷貝到第一個 即拷完以後a為a2\0 注意每個字串最後都有個\0 然後 strcat 後a就是"a2yz"

最終輸出結果為"a2yz"

15樓:黃萱

strcpy(char *, char *)函式表示將第二個引數開始的字串拷貝到第一個引數的字串位置。故strcpy (a+1, b+2) 表示將b[2]開始的字串複製到a[1]開始的字串中,即a陣列變為“a2”。

strcat(char *, char *)函式表示將第二個引數開始的字串接到第一個引數開始的字串上,返回第一個字串的指標。故strcat(a,c+1)表示將c[1]開始的字串接到“a2”後面,a陣列變成“a2yz”。

最後用puts輸出字串。

不懂請追問,望採納。

請教一道關於函式的數學題,請教一道關於函式的數學題初二

1.y1 y2 可解出x 32 為穩定 穩定需求量為28萬件 2.y1x 32.3.可設提供m元補貼,版於是,現在穩定需求量為28 4 32 萬件權,有y1 y2 即 28 m 60 2 28 m 36 解出m 4 元 一道初二函式數學題,簡單的我不會,要有全過程 列一個簡單的示意圖 甲倉庫12輛 ...

一道關於函式的證明題

1 點e的橫座標為2,帶入y x 1得e 2,1 tan角aod 3 2,因此設d 2m,3m 將d點座標帶入y x 1得d 2,3 將點d e的座標帶入y ax 2 bx 3聯立方程解得 a 1,b 1 所以拋物線解析式為 y x 2 x 3 頂點座標為 b 2,4ac b 2 4ac 帶入的 1...

一道關於數學對數函式的問題

定義域是 0,1 x 0,1 x 1 1,2 y f x a x 1 0 a y x 1 2 因為a y是單調函式根據定義域可知為單增函式因此a 0 1,a 1 2 故a 2 定義域是0到1 所以x 1的範圍是1到2 所以當x 0時y 0 x 1時y 1 肯定不是0 a 1 如果 抄那樣。他的值域襲...