![](/img/trans.png)
[英]segmentation fault (core dumped) when taking a string from user and finding its length using strlen()
[英]Segmentation fault when finding string length
計算字符串長度的函數; 我認為這里的邏輯是正確的:
int strlength(char *s)
{
int count=0;
while(*s!='\0')
{
count++;
s++;
}
return count;
}
int main(void) {
char *s;
int length;
printf("enter your string ");
scanf("%s",s);
length = strlength(s);
printf("string length:%d",length);
return 0;
}
我在這里正確輸入字符串並進行分配嗎? 誰能解釋為什么我在這里出現細分錯誤?
您s
必須指出某事。 這是分配128個字節的示例:
s = malloc(128);
完成后,請確保釋放內存:
free(s);
請注意,您必須限制可以從用戶讀取的數量。
scanf("%127s", s);
我為NUL終止符留了一個額外的字節。
main()函數的第二行聲明一個指針。 但是,該指針永遠不會初始化為指向程序擁有的某個內存塊。
建議使用堆分配功能之一(malloc,calloc,realloc)初始化該指針。
使用該未初始化的指針是未定義的行為,並且(如您所見)會導致seg故障事件。
調用任何scanf()系列函數時,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.