이 작은 조각의 코드로 작업하지만, 어떤 이유로 전체 시간이 계속 충돌합니다.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;
이 작은 조각의 코드로 작업하지만, 어떤 이유로 전체 시간이 계속 충돌합니다.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;
뭘하는지 생각이있어. 버퍼를 선언하십시오 (예 : char str[50]
). 그러나 buffer overflows에 유의하십시오.
감사합니다. 문제가 해결되었습니다. – danielrieske
@ user3206159이 답변으로 도움이되었으므로 옆에있는 작은 체크 표시를 클릭하여 답변을 수락 할 수 있습니다. 이것은 당신과 mdsl 모두에게 평판 포인트를 줄 것이며, 당신의 질문을 해결 된 것으로 표시 할 것입니다. 필수는 아니지만 적극 권장됩니다. – computerfreaker
메모리의 임의의 공간을 가리키는 char * 포인터 만 만들었고 그걸로 무언가를하려고 시도 했으므로 프로그램이 충돌합니다. malloc에와 문자열 메모리를 할당 동적
char str[50];
또는 :
당신은 문자의 배열을 만들어야합니다
(50)는 버퍼의 예상 크기char* str;
str = (char *)malloc(50*sizeof(char)); // allocate memory
// some operations
free(str); // deallocate memory
.
'malloc' 호출의 리턴 값을 _ 항상 확인해야합니다. 개인적으로, 나는 항상 다음과 같이 간단하게 쓴다 : if ((str = (char *) malloc (50 * sizeof (char))) == NULL) {fprintf (stderr, "Malloc error \ n"); 출구 (1); }' – PLPeeters
@Lafexlos 제목에서 태그를 제거하는 것이 유용한 편집이지만, 너무 작다고 생각합니다. – yizzlez