Δημοσιεύτηκε: 12 Απρ 2011, 21:52
από pc_magas
Λογικά με ένα trhead όπου θα δίνεις ένα ποσοσ χαρακτήρα και 8α το βάζει ένα ένα σε δυναμικό πίνακα με την gerchar() σε ένα loop μέχρι να σου δωθεί \n χαρακτήρας η space ανάλωγως.
Σου έχω μια πρόταση με δυναμική μνήμη:
Σε loop η getchar() διαβάζει ότι έχει ο buffer του stdin άμα βάλει 1000 χαρακτήρες στο buffer σε ένα loop η getchar θα διαβάζει τον επόμενο χαρακτήρα του buffer και δεν θα περιμένει να του δώσεις άλλο χαρακτήρα άρα διαβάζεις γράμμα γράμμα το string και το βάζεις στην κατάλληλη θέση;(Αρκεί να μην γίνει κανα fflush(stdin))
Έτσι εκμεταλέυτικα αυτήν την "αδυναμία" για να διαβάζω ένα string να γράμμα-γράμμα.
Δείτε εδώ
Κώδικας: Επιλογή όλων
#include<stdio.h>
#include<stdlib.h>
char * readstring();
char * readstring()
{
char temp,*s=NULL;
int i=0;
while(1)//8ewritika einai apeiros vrogxos alla den einai sthn pragmatikotita
{
s=(char *)realloc(s,(i+1)*sizeof(char));//auksisi xwrou kata 1 8esi xarakthra
scanf("%c",&temp);//anagnwsi proswrinou xaraktira
if(s!=NULL)//An esei desmeutewi xwros
{
if(temp!='\n')//Oso den vazeis alagi grammis
{

s[i]=temp;//8ese to prosorino xwro gia xarakthres ston pinaka apo string

}
else
{
s[i]='\0';//eidallws termatise to
break;//kai vges apo to loop
}
i++;//auksisi metriti
}
else//An den mporeis na demseuseis xwro
{
break;//vges
}
}
return s;//Epestrepse oti demseuses
}
int main()
{
char *string=NULL;
printf("Enter a string to read\n");
string=readstring();
if(string!=NULL)
{
printf("%s\n",string);
}
}

Έτσι εκεταλευόμενος αυτό διαβάζω string απεριόριστου μήκους!