[英]Why do I get Segmentation fault while calling function with variable as pointer to character array?
我是使用字符數組指針的新手。 如果我使用主函數 1 運行代碼,它會正常運行並打印“hello”字而沒有任何錯誤。但是在使用第二個主函數時,我會因分段錯誤而出錯。
我試圖找出它,但不明白這里的問題是什么。 實際上我的目標是使用帶有指向字符數組的指針的第二個主函數(因為我只有那種形式的數據)。 如何使用第二個主函數執行代碼以獲得與主函數 1 相同的結果?
#include<stdio.h>
#include<string.h>
void enmToStng(char varState[])
{
strcpy(varState,"hello");
}
//main function 1
int main(void)
{
char varState[]= {"1"};
enmToStng(varState);
printf("varState = %s\n", varState);
return 0;
}
//main function 2
/*int main(void)
{
char *varState[]= {"1","2","3"};
enmToStng(varState[1]);
printf("varState[1] = %s\n", varState[1]);
return 0;
}*/
您聲明了一個字符串,其中只有兩個元素( 1 and \\0
)的空間,但是隨后您在其中復制了hello
7 個字符,您不能這樣做,因為您沒有足夠的空間。
你可以使用這樣的東西
void enmToStng(char varState[])
{
varState = malloc(7);
strcpy(varState, "hello");
}
PS:由於您沒有通過引用發送varState
,因此在main
您將打印1
not hello
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.