Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2009, 00:13   #1
Sergo(1)
 
Регистрация: 14.04.2009
Сообщений: 4
По умолчанию Вывод структуры в Си

Здраствуйте,нужна помощь

У мя есть струтура,данные которой я ввел с клавиатуры.При выводе выводится только послед данные,которые я ввел.Как сделать чтобы у меня выводились все данные?Подскажите алгоритм пожалуйста.

Заранее спасибо.
Sergo(1) вне форума Ответить с цитированием
Старый 16.04.2009, 00:28   #2
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

А можно исходник выложить? Охота глянуть- может в нем какая либо ошибка или недочет!
vasek123 вне форума Ответить с цитированием
Старый 16.04.2009, 08:54   #3
Sergo(1)
 
Регистрация: 14.04.2009
Сообщений: 4
По умолчанию

Тогда выкладываю весь код:


#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#define HASHSIZE 211


struct nlist {
struct nlist *next;
char * name;
char * defn;
struct nlist *prV;
};

static struct nlist *hashtab[HASHSIZE];

unsigned hash (char *s)
{
unsigned hashval;
for (hashval =0; *s!='\0'; s++)
hashval = *s + 31 * hashval;
return hashval % HASHSIZE;
;
}

struct nlist *lookup(char *s)
{
//fprintf(stderr,"lookup: %s, hash=%d\n", s,hash(s));
return hashtab[hash(s)];

}

struct nlist *install (char *name, char *defn)
{
/* fprintf(stderr,"INSTALL"); */
struct nlist *np;
unsigned hashval;
if ((np=(lookup(name))) == NULL)
{
np = (struct nlist*)malloc(sizeof (*np));
if (np == NULL || (np->name = strdup(name)) == NULL)
{

return NULL;
}
hashval=hash(name);
fprintf(stderr,"Record %s was added,hashval=%d\n",name,hashval);
np->next=hashtab[hashval];
hashtab[hashval]=np;
}
else {
fprintf(stderr, "Already exists not added\n");
//free ((void *)np->defn);
//free ((void *)np->name);
}
if ((np->defn = strdup(defn)) == NULL)
return NULL;
return np;
}

int main ()
{
int vibor;
char s[5];
char search_name[10];
struct nlist * np;


struct nlist *name;
struct nlist *defn;
struct nlist *p;
struct nlist *q=NULL;
struct nlist *e=NULL;



while(1)
{
printf("\n insert variant:\n 1-add \n 2-search \n 3-conclusion \n 4-exit \n");
scanf("%d",&vibor);

switch (vibor)
{
case 1:
{
p=(struct nlist*)malloc(sizeof(struct nlist));
p->name = (char*)malloc(100);
p->defn = (char*)malloc(100);
printf ("\nName:");
scanf ("%s",p->name);
printf ("\nText:");
scanf ("%s", p->defn);
install(p->name, p->defn);
break;
}
case 2:
{

printf("\nName:");
scanf ("%s",search_name);

np = lookup(search_name);
if (np != NULL)
{
fprintf(stderr,"\nFound name=%s value=%s\n", np->name,np->defn);
}
break;
}
case 3:
{
if (q==NULL && e==NULL)
q=p;
else e->next=p;
e=p;
e->next=NULL;
printf ("\n Table \n");
p=q;
while (p!=NULL)
{
printf ("\nname = %s", p->name);
printf ("\tText = %s", p->defn);
p=p->next;
}
printf ("\n");
free (p);
break;
}
case 4:
{
exit(-1);
break;

}
default:
{
printf("\n repeat variant \n");
break;
}
}
}
return 0;
}


Вопрос про case 3.
Sergo(1) вне форума Ответить с цитированием
Старый 16.04.2009, 09:31   #4
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

ээээ..... непонятно у вас массив динамический или статический??? если динамический, то зачем
Код:
static struct nlist *hashtab[HASHSIZE];
т.к. нужен только указатель на первый (можно ещё последний) элементы.

А если статический, то зачем Next и Prv.......
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структуры masha.dongyz Помощь студентам 2 19.12.2011 20:29
Структуры в СИ ManInBlack Помощь студентам 3 04.04.2009 19:08
Структуры Centyrion Общие вопросы C/C++ 4 06.05.2008 20:33
Структуры в С++ bloo[d] Помощь студентам 1 30.01.2008 22:27
[С++]Структуры...HELP!!! Настенька Помощь студентам 6 25.12.2007 21:11