2014-05-13 1 views
0

이 작은 조각의 코드로 작업하지만, 어떤 이유로 전체 시간이 계속 충돌합니다.strlen 코드가 작동하지 않습니다.

사람은 당신이 str에 대한 메모리를 할당하지 않은 잘못된

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

뭘하는지 생각이있어. 버퍼를 선언하십시오 (예 : char str[50]). 그러나 buffer overflows에 유의하십시오.

+0

감사합니다. 문제가 해결되었습니다. – danielrieske

+1

@ user3206159이 답변으로 도움이되었으므로 옆에있는 작은 체크 표시를 클릭하여 답변을 수락 할 수 있습니다. 이것은 당신과 mdsl 모두에게 평판 포인트를 줄 것이며, 당신의 질문을 해결 된 것으로 표시 할 것입니다. 필수는 아니지만 적극 권장됩니다. – computerfreaker

1

메모리의 임의의 공간을 가리키는 char * 포인터 만 만들었고 그걸로 무언가를하려고 시도 했으므로 프로그램이 충돌합니다. malloc에와 문자열 메모리를 할당 동적

char str[50]; 

또는 :

당신은 문자의 배열을 만들어야합니다

(50)는 버퍼의 예상 크기
char* str; 
str = (char *)malloc(50*sizeof(char)); // allocate memory 
// some operations 
free(str);      // deallocate memory 

.

+0

'malloc' 호출의 리턴 값을 _ 항상 확인해야합니다. 개인적으로, 나는 항상 다음과 같이 간단하게 쓴다 : if ((str = (char *) malloc (50 * sizeof (char))) == NULL) {fprintf (stderr, "Malloc error \ n"); 출구 (1); }' – PLPeeters