运行时please input the name:,然后直接是are you sure? y/n,中间没有。请各位帮忙

王朝知道·作者佚名  2010-09-18
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

void Delete()

{ printf("\n\n\tplease input the name:\n");

gets(name1); p4=head;

if(strcmp(p4->name,name1)!=0&&p4!=NULL)

{ p4=p4->next;

}

if(strcmp(p4->name,name1)!=0&&p4==NULL)

printf("it's not exit in the addr-book!");

else

{ while(!strcmp(p4->next->name,name1)==0)

{ printf("are you sure? y/n");

scanf("%c",&x);

if(strcmp(x,"y")==0)

{

if(p4==head)

{

head=head->next;

free(p5);

}

else

{

p4->next=p5->next;

free(p5);

}

}

else

return;

}

}

}

參考答案:

void

Delete(void)

{

struct node * p4, * p5;

printf("\n\n\tplease input the name:\n");

fflush(stdin);

gets(name1);

p4 = head;

while ( p4 != NULL && strcmp(p4->name, name1)!= 0 ) {

p5 = p4;

p4 = p4->next;

}

if( p4 == NULL )

printf( "it doesn`t exist in the addr-book!" );

else {

printf( "are you sure? y/n" );

scanf( "%c", &x );

fflush(stdin);

if( x == 'y' || x == 'Y') {

if( p4 == head && p4->next != NULL ) {

head = p4->next;

free(p4);

}

else if ( p4->next == NULL )

head = NULL;

else {

p5->next = p4->next;

free(p4);

}

}

}

}

你用的p4和p5是全局变量吧,那你要仔细阅读我改的程序,看懂了之后自己协调一下,因为我没有看到你的代码的上下文。

楼主,你不用跟我解释你这个函数干什么的,我当然知道是干什么的,不然我怎么能给你改。现在的问题是,你的全局变量的p4和p5,跟我这里的p4,p5好像是刚好反的,不过也无所谓,因为我这个函数里面的p4何p5是新声明的局部变量,不会影响到你的全局变量的。如果你怕不安全,就把我这个函数里面的p4和p5分别换成别的变量名就可以了比如说p和q。函数的功能没有变,就是你要的功能。如果有问题,你再告诉我。

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航