2014-05-13 150 views
0

在這段代碼上工作,但由於某些原因,它一直在崩潰。strlen代碼不能正常工作

任何人有一個想法,我做錯了什麼

char *str; 
printf("Enter a string\n"); 
gets(str); 
printf("The size of the string is %d", strlen(str)); 
system("PAUSE");  
return 0; 
+0

@Lafexlos從標題中刪除標籤是一個有用的編輯,我認爲它太小 – yizzlez

回答

3

您還沒有分配任何內存str。聲明緩衝區,例如char str[50],但請注意buffer overflows

+0

謝謝你解決了這個問題。 – danielrieske

+1

@ user3206159既然這個答案對你有幫助,你可以通過點擊旁邊的小複選標記來接受它。這會給你和mdsl一些聲望點,並將你的問題標記爲已解決。這不是必需的,但強烈建議。 – computerfreaker

1

您只創建了一個char *指針,指向內存中的隨機空間,並且您嘗試使用它來執行某些操作 - 這就是您的程序崩潰的原因。

應創建字符數組:

char str[50]; 

或動態地進行字符串使用malloc分配內存:

char* str; 
str = (char *)malloc(50*sizeof(char)); // allocate memory 
// some operations 
free(str);      // deallocate memory 

其中50是您的預計緩衝器的大小。

+0

應該_always_檢查'malloc'調用的返回值。就個人而言,我總是寫一個簡單的如果這樣做:'if((str =(char *)malloc(50 * sizeof(char)))== NULL){fprintf(stderr,「Malloc error \ n」);出口(1); }' – PLPeeters