Так что у меня есть этот большой код (так что я не смогу поместить всю вещь здесь)
Но в какой-то момент у меня есть это.
while(ptr1!=NULL)
{
printf("%sab ",ptr1->name);
puts(ptr1->name);
ptr1=ptr1->next;
}
Теперь мой ptr1 указывает на запись массива структуры (каждая запись представляет собой связанный список), и структура заполняется из файла.
Теперь в этом цикле он печатает
FIRSTab FIRST
SECONDab SECOND
THIRD
Теперь, почему мои третьи не печатаются дважды?
Также, если я сделаю
printf(" %s",ptr1->name); // i.e. one space before %s
Я получаю
THIRDD
Если поставить 2 пробела до% s, я получу
THIRDRD
3 пробела дает
THIRDIRD
и т. Д.
Также, если я попытаюсь сделать strcmp (ptr1-> name, «THIRD»), я не получу правильное сравнение для THIRD.
Почему ??
Вот как я заполнил свою структуру.
// G is the structure, fp is passed as argument to function.
//THe file format is like this.
//FIRST SECOND THIRD
//NINE ELEVEN
//FOUR FIVE SIX SEVEN
// and so on.
int i=0,j=0,k=0;
char string[100];
while(!feof(fp))
{
if(fgets(string,100,fp))
{
G[i].index=i;
k=0;j=0;
//\\printf("%d",i);
//puts(string);
node *new=(node*)malloc(sizeof(node));
new->next=NULL;
G[i].ptr=new;
node* pointer;
pointer=G[i].ptr;
while(string[j]!='\n')
{
if(string[j]==' ')
{
pointer->name[k]='\0';
k=0;
node *new=(node*)malloc(sizeof(node));
new->next=NULL;
pointer->next=new;
pointer=pointer->next;
j++;
}
else
{
pointer->name[k++]=string[j];
j++;
}
}
pointer->name[k]='\0';
i++;
}