ABA


"בעייה ב''ספר טלפונים'' בC"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15592 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15592
חומוס לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
13069 הודעות, 5 פידבק, 6 נקודות
   00:27   01.12.09   
אל הפורום  
  בעייה ב''ספר טלפונים'' בC  
 
נתנו לנו כפרוייקט בC לעשות ספר טלפונים... בעיקרון גמרתי כמעט את
כולו... אבל יש לי כרגע בעיה.
אני לא מצליח למחוק את המספר (המבנה) הראשון בתוך הספר טלפונים
מדובר על הפונקציה delete_mem
הפונקציה הזאת משתמשת בפונקציית החיפוש search_mem שתפקידה
הוא למקם את הפויינטר של הקובץ על המבנה שהוא מצא.
אני יושב על זה כבר שעות ופשוט לא מצליח להבין איפה הבעיה
הוא מוחק לי את כולם אבל את המספר הראשון הוא לא מצליח למחוק
מקווה שתוכלו לעזור :|


#include "stdafx.h"
#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#define size 20

typedef struct node {
char name;
char number;
char id;
char adress;
} NODE;

void print_menu();
void add_mem(FILE *f);
void print_list(FILE *f);
void search_mem(FILE *f);
void delete_mem(FILE *f);

int main()
{
FILE *f;
char c=0;
char *name = "xxx.x";
f =fopen(name, "a+b");
delete_mem(f);
print_list(f);
while (c!='5')
{
system("cls");
print_menu();
flushall();
c=getch();
switch (c)
{
case '1': {
system("cls");
add_mem(f);
getch();
}break;
case '2':{
system("cls");
search_mem(f);
getch();
}break;
case '3':{

delete_mem(f);
getch();
}break;
case '4':{
print_list(f);
getch();
}break;
}
}



}

void print_menu()
{
printf ("Dor & Oded Phonebook\n");
printf ("--------------------\n\n");
printf ("(1) Add a new member\n");
printf ("(2) Find a member\n");
printf ("(3) Delete a member\n");
printf ("(4) Show the phonebook\n");
printf ("(5) Exit\n\n");
flushall();

}

void add_mem(FILE *f)
{

NODE *node = (NODE *)malloc(sizeof (NODE));
node=NULL;
node=(NODE *)malloc(sizeof(NODE));
printf("Enter a name:\n");
gets(node->name);
printf("Enter an adress:\n");
gets(node->adress);
printf("Enter an ID:\n");
gets(node->id);
printf("Enter a number:\n");
gets(node->number);
fseek( f, 0L, SEEK_END );
fwrite (node,sizeof(NODE),1,f);

rewind(f);
}

void print_list(FILE *f)
{
NODE *node = (NODE *)malloc(sizeof (NODE));
printf ("Name Adress ID Number\n");
printf ("-----------------------------------------------------------------------\n\n");
while(fread (node,sizeof(NODE),1,f))
{
printf("%s\t\t ",node->name);
printf("%s\t\t ",node->adress);
printf("%s\t\t",node->id);
printf("%s\t\t",node->number);
printf("\n");
}
rewind(f);
}


void search_mem(FILE *f)
{
int q,n=0;
char c="0";
NODE node;
printf ("(1) By name\n(2) By number\n");
printf ("(3) By Adress\n(4) By ID\n");
scanf ("%d",&q);
printf("Enter the detail:\n");
flushall ();
gets (c);
while(fread (&node,sizeof(NODE),1,f))
{
if (q==1)
{
if (!strcmp(c,node.name))
{
printf ("Member has been found\n");
fseek (f,-(sizeof(node)),SEEK_CUR);
n++;
break;
}
}
else if (q==2)
{
if (!strcmp(c,node.adress))
{
printf ("Member has been found\n");
fseek (f,-(sizeof(node)),SEEK_CUR);
n++;
break;
}
}

else if (q==3)
{
if (!strcmp(c,node.id))
{
printf ("Member has been found\n");
fseek (f,-(sizeof(node)),SEEK_CUR);
n++;
break;
}
}
else if (q==4)
{
if (!strcmp(c,node.number))
{
printf ("Member has been found\n");
fseek (f,-(sizeof(node)),SEEK_CUR);
n++;
break;
}
}
}

if (n==0)
printf("The member does'n exist\n");

}


void delete_mem(FILE *f)
{
NODE temp;
fseek(f,-(sizeof(temp)),SEEK_END);
fread(&temp,sizeof(temp),1,f);
rewind(f);
search_mem(f);
fwrite(&temp,sizeof(NODE),1,f);
fclose(f);
HANDLE h=CreateFile(TEXT("xxx.x"),GENERIC_WRITE | GENERIC_READ,0,0,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
SetFilePointer(h,-1*sizeof(temp),NULL,FILE_END);
SetEndOfFile(h);
CloseHandle(h);
fopen("xxx.x","r+b");

}


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  יש מצב להעלות כטקסט? כל הפונטים פה התחרבשו... ldan192  04.12.09 11:10 1
     הסתדרתי בסוף :) חומוס 04.12.09 15:30 2

       
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   11:10   04.12.09   
אל הפורום  
  1. יש מצב להעלות כטקסט? כל הפונטים פה התחרבשו...  
בתגובה להודעה מספר 0
 


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
חומוס לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
13069 הודעות, 5 פידבק, 6 נקודות
   15:30   04.12.09   
אל הפורום  
  2. הסתדרתי בסוף :)  
בתגובה להודעה מספר 1
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net