strcpy之段錯誤


對c下的指針總有一種畏懼感,動不動就出現各種錯誤,先看一段程序吧:

#include   <stdio.h> 
#include <string.h>
int main(void)
{
char *buf;               //定義char指針
char *string = "hello ";       //指向常量數據區的“hello”字符串
buf = string;               //將指向常量的指針賦值

printf("buf=%s\n ", buf);
strcpy(buf, "world");          //試圖將常量數據區的 "world"字符串拷貝給指向常量數據區的buf
printf("buf=%s\n", buf);
return 0;
}

於是在strcpy處,出現了段錯誤 Segmentation fault

解決辦法:

一、buf沒有空間,   應該用malloc分配空間

buf = malloc(4);

二、改變 string為:

char string[ ] = "hello";

這樣,string是指向數組的指針,賦值后,buf也是指向數組的指針,再次調用strcpy時,就把“world”復制到數組中了!

三、可以直接賦值:

buf = "world";

 

小結:指針只存貯了一個地址,想把整個字符串復制給他,必須手動分配內存空間,或存放於數組之中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM