|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.04.2009, 00:13 | #1 |
Регистрация: 14.04.2009
Сообщений: 4
|
Вывод структуры в Си
Здраствуйте,нужна помощь
У мя есть струтура,данные которой я ввел с клавиатуры.При выводе выводится только послед данные,которые я ввел.Как сделать чтобы у меня выводились все данные?Подскажите алгоритм пожалуйста. Заранее спасибо. |
16.04.2009, 00:28 | #2 |
Заблокирован
Регистрация: 21.11.2008
Сообщений: 4,986
|
А можно исходник выложить? Охота глянуть- может в нем какая либо ошибка или недочет!
|
16.04.2009, 08:54 | #3 |
Регистрация: 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. |
16.04.2009, 09:31 | #4 |
Форумчанин
Регистрация: 12.09.2008
Сообщений: 239
|
ээээ..... непонятно у вас массив динамический или статический??? если динамический, то зачем
Код:
А если статический, то зачем Next и Prv.......
Надо бы избавиться от привычки ставить многоточие.....
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Структуры | 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 |