유닉스안에서 C언어를 이용한 명함 만들기 입니다; 이해안가는 부분이있네요
바나나맛캔디
질문 제목 : 교수님꼐서 생성 수정 삭제 이렇게 3개 파트로 나눠서 명함만들기를 짜보라고했는데 생성 수정 까진했는데 삭제에서 막혀버리네요 그래서 친구한테 수정을 요구했더니 이걸 0으로 바꾸면 된다고하더라고요?질문 요약 :즉; 공백을 넣을 구조체
제가짠 코드card.name[i],card.phone[i]
친구가 고쳐준 코드 card.name[0],card.phone[0]
0으로 넣었는데 어떻게 첨에 입력한 i값이 나올까요?질문 내용 : #include stdio.h
#include unistd.h
#include fcntl.h
#include stdlib.h
#include namecard.h
int main(void)
{
int fd;
struct namecard card;
char buf[MAXLEN];
int i;
int j=0;
fd = open(mynamecard, O_RDWR, 0644);
if (fd == -1) {
printf(Error: cannot open\n);
exit(1);
}
while(read(fd,&card,sizeof(struct namecard)) 0)
{
j++; }
printf(Number of namecard : %d,j);
do {
do{
printf(\n);
printf(Want to erase i: );
gets(buf);
i = atoi(buf);
}while(i=j);
lseek(fd, i*sizeof(struct namecard),
SEEK_SET);
read(fd, &card, sizeof(struct namecard));
printf(Name: %s\n, card.name);
printf(phone number: %s\n, card.phone);
printf(\n);
printf(Delete?(y/n));
gets(buf);
if (!strcmp(buf,y) || !strcmp(buf,Y));
{
lseek(fd, i*sizeof(struct namecard), SEEK_SET);
card.name[0]=NULL;
card.phone[0]=NULL;- (문제의 부분)
write(fd, &card,sizeof(struct namecard));
}
} while (!strcmp(buf,y) || !strcmp(buf,Y));
close(fd);
}