C/C++使用strcpy函數報錯:“XXX處有未經處理的異常:0xC0000005:寫入位置0x00000000時發生訪問衝突”

  strcpy是一種C語言的標準庫函數,它的作用是把含有'\0'結束符的字符串複製到另一個地址空間,返回值的類型爲char *。其原型聲明:char *strcpy(char *dest, const char *src);但使用strcpy函數時我們得注意空指針不能作爲其參數,既不能作爲dest的參數,也不能作爲src的參數,否則會報錯誤:“XXX處有未經處理的異常:0xC0000005:寫入位置0x00000000時發生訪問衝突”。

 

示例一:空指針不能作爲dest的參數

有如下代碼:

#include <stdio.h>
#include <string.h>

int main()
{
	char str[20] = { 0 };
	strcpy(NULL, "hello world");
	printf("str:%s\n",str);
	return 0;
}

 

編譯,運行,我們會發現程序報錯了,如下圖所示:

 

示例二:空指針不能作爲src的參數

有如下代碼:

#include <stdio.h>
#include <string.h>

int main()
{
	char str[20] = { 0 };
	strcpy(str, NULL);
	printf("str:%s\n",str);
	return 0;
}

 

編譯,運行,我們會發現程序報錯了,如下圖所示:

 

上述兩個實例證明了空指針不能作爲strcpy函數的參數。

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章