在這段代碼上工作,但由於某些原因,它一直在崩潰。strlen代碼不能正常工作
任何人有一個想法,我做錯了什麼
char *str;
printf("Enter a string\n");
gets(str);
printf("The size of the string is %d", strlen(str));
system("PAUSE");
return 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;
您還沒有分配任何內存str
。聲明緩衝區,例如char str[50]
,但請注意buffer overflows。
謝謝你解決了這個問題。 – danielrieske
@ user3206159既然這個答案對你有幫助,你可以通過點擊旁邊的小複選標記來接受它。這會給你和mdsl一些聲望點,並將你的問題標記爲已解決。這不是必需的,但強烈建議。 – computerfreaker
您只創建了一個char *指針,指向內存中的隨機空間,並且您嘗試使用它來執行某些操作 - 這就是您的程序崩潰的原因。
應創建字符數組:
char str[50];
或動態地進行字符串使用malloc分配內存:
char* str;
str = (char *)malloc(50*sizeof(char)); // allocate memory
// some operations
free(str); // deallocate memory
其中50是您的預計緩衝器的大小。
應該_always_檢查'malloc'調用的返回值。就個人而言,我總是寫一個簡單的如果這樣做:'if((str =(char *)malloc(50 * sizeof(char)))== NULL){fprintf(stderr,「Malloc error \ n」);出口(1); }' – PLPeeters
@Lafexlos從標題中刪除標籤是一個有用的編輯,我認爲它太小 – yizzlez