1. C中關於字元串復制的問題
這段代碼運行沒出錯,不代表這個實現方法沒有問題,你也看到了目標串的長度比源串要小。
對於char a[]="I am happy!";這樣的寫法,編譯器會分配一定的內存區域,考慮到存取效率,一般應該是2的n次方這樣的大小,但是具體分配多少?不一定,不同的編譯器可能不同。
在C裡面,指針操作一直是一個高風險的存在。要知道,對於已分配空間的指針操作,編譯器是無法完全檢測到是否越界的,只有在運行時檢測到越界了或者影響了其它變數的值,才有可能知道。
在這里長的字元數組復制給短的字元數組卻沒有出錯,可能是長數組的長度沒有超過編譯器分配的空間,而且這段代碼裡面沒有更多的變數,如果char a[]的長度沒有達到覆蓋 char b[]的程度,就不會表現出來。
總之,對類似這種內存復制,比較保險的做法就是在操作前給被操作的變數分配足夠的空間,把出錯的可能控制在自己手裡,而不是丟給編譯器處理,否則還是有很大的可能覆蓋到其他變數。
2. c語言 將一個數組里的字元串復制到另一個數組中
比如源字元串是s,要復制到另一字元串t中,這里必須滿足t能放得下s的全部元素,否則將會有危險發生。舉例代碼如下:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
char *s="The quick brown fox jumps over a lazy dog. 1234567890";
char *ps=s,t[60],*pt=t;
while(*pt++=*ps++);//這就把s全部復制給t了
printf("%s\n",t);//打出來看看...
return 0;
}
3. c語言中strcpy函數干什麼用的
他是字元串的復制,函數strcpy(字元數組1,字元串2)作用就是 將字元串2復制到字元數組1 中去。
例如 char str1[10]='',
str2[]={「china」}
strcpy(str1,str2);
這樣str1[]數組的內容就是「china」。
(3)c語言字元串數組復制擴展閱讀:
C語言庫函數,常用庫函數有:
1、scanf格式輸入函數
2、printf格式輸出函數
3、systemdos命令函數
4、sort排序
5、main主函數
6、fgets文件讀取字元串函數
7、fputs文件寫入字元串函數
8、fscanf文件格式讀取函數
9、fprintf文件格式寫入函數
10、fopen打開文件函數
11、getchar輸入字元函數
12、putchar輸出字元函數
13、malloc動態申請內存函數
4. C語言中如何復制數組的內容
在內存中以每4個位元組的單位分配n塊連續的內存(n
=
你數組元素個數)
第一塊的地址就是數組名(沒有"["和"]")保存的地址
5. c語言編程題!字元串復制。輸入一個字元串,把它復制到一個字元數組中,並輸出。
#include <stdio.h>
int main()
{
char a[100] = "