ich einen Code schreibe, die so viel ein Benutzer einen String der Länge akzeptiert wollen und zeigt it.so das ist, was ichIch habe diesen Code geschrieben und aber es funktioniert nicht richtig
#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;
}
geschrieben haben, aber es ist geht nicht in die Schleife und akzeptiert keine Eingabe. Kannst du mir sagen, was schief läuft? DANK
Warum druckst du Zeichen für Zeichen, anstatt es in einen NULL-terminierten Zeichenfolgenpuffer zu legen und es direkt 'printf' zu geben? Während 'free (a)' verständlich ist, ist die Einstellung von 'a' auf' NULL' wirklich sinnlos. – tadman
Normalerweise würden Sie dieses Problem angehen, indem Sie einen optimistisch großen Puffer zuweisen und wenn der Benutzer diese Größe überschreitet, die doppelte Zuweisung vornehmen. Dies vermeidet eine unnachgiebige Umverteilung. – tadman
Willkommen bei Stack Overflow! [Bitte lesen Sie die Diskussion darüber, warum nicht der Rückgabewert von malloc() und family in C ..] (https://stackoverflow.com/q/605845/2173917) –