을 작동하지 않습니다 내가 내가이 코드를 작성하고 있지만, 내가 많은 사용자가 원하는 길이의 문자열을 받아 it.so이를 표시하는 코드를 작성하고 제대로
#include<stdio.h>
#include<stdlib.h>
void main()
{
char *a;
int i,n;
a=(char*)calloc(1,sizeof(char));
printf("enter the string\t");
for(i=0;a[i]!=0;i++)
{
scanf("%[^0]c",&a[i]);
n=2+i;
a=(char*)realloc(a,(n)*sizeof(char));
}
for(i=0;a[i]!=0;i++)
{
printf("%c",a[i]);
}
free(a);
a=NULL;
}
를 작성했지만 그건 무엇인가 루프에 들어 가지 않고 모든 입력을 허용합니다. 뭐가 잘못 됐는지 말해 줄 수있어? 당신이
calloc
와
a
를 할당하기 때문에 감사
왜 이것을 NULL로 끝나는 문자열 버퍼에 넣는 대신 문자로 인쇄하고 'printf'에 직접 입력합니까? 'free (a)'는 이해할 수있는 반면,'a'를'NULL '로 설정하는 것은 정말로 의미가 없습니다. – tadman
일반적으로 낙관적으로 큰 버퍼를 할당하여이 문제를 해결하고 사용자가 해당 크기를 초과하면 크기를 두 배로 재 할당하십시오. 이렇게하면 잔인한 재 할당을 피할 수 있습니다. – tadman
스택 오버플로에 오신 것을 환영합니다! [C에서 malloc()과 family의 반환 값을 왜 던지지 말아야하는지에 대한이 토론을 보아라.] (https://stackoverflow.com/q/605845/2173917) –