鱼C论坛

 找回密码
 立即注册
查看: 3739|回复: 20

gets 加指针问题。。。

[复制链接]
发表于 2015-6-17 08:32:36 | 显示全部楼层
我说你这写的链表不像链表数组不像数组的到底是个什么玩意??
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-6-17 08:33:23 | 显示全部楼层
至于你说的问题  改成 char *c; 后
输入用        scanf("%s",&p1.c ); 就应该没问题了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-6-17 09:09:26 | 显示全部楼层
帮你改了下~~
  1. #include<stdio.h>
  2. #include<malloc.h>
  3. int n = 0;
  4. struct S
  5.         {
  6.         char name[20];
  7.                 int num;
  8.         struct  S *next;
  9.         }*head,*p1,*p2;
  10. int main()
  11. {
  12.         int i;
  13.         char ch;
  14.         head = (struct S*)malloc(sizeof(struct S));
  15.         p1 = head;
  16. s:        printf("Please Input your name:");
  17.         scanf("%s",&p1->name );
  18.         printf("Pleas Input your num:");
  19.         scanf("%d,",&p1->num);
  20.         while((ch = getchar())!='\n');
  21.         if(p1->num  != 0)
  22.         {
  23.                 n++;
  24.                 p2 = (struct S*)malloc(sizeof(struct S));
  25.                 p1->next = p2;
  26.                 p1 = p2;
  27.                 goto s;
  28.         }
  29.         else
  30.         {
  31.                 p1->next =NULL;
  32.         }

  33.         printf("你一共输入了%d个名字!\n",n);

  34.         p1 = head;
  35.         i = 1;

  36.         while(p1->next != NULL)
  37.         {
  38.                 printf("%d: name:%s num: %d\n",i,&p1->name,p1->num  );
  39.                 i++;
  40.                 p1 = p1->next ;
  41.         }




  42.         /*
  43.         printf("输入学生名\n");
  44.         scanf("%s",&p1.c );//gets(p1.c);               //这里成功输入“小明”,//输入过后程序就直接崩溃了,为什么?
  45.         printf("请输入数学成绩\n");
  46.         scanf("%d",&p1.a);
  47.         printf("请输入语文成绩\n");
  48.         scanf("%d",&p1.b);
  49.        
  50.         printf("输入学生名\n");
  51.         scanf("%s",&p2.c );//gets(p2.c);                 //这里就直接跳过了,没让我输入。这是为什么?
  52.         printf("请输入数学成绩\n");
  53.         scanf("%d",&p2.a);
  54.         printf("请输入语文成绩\n");
  55.         scanf("%d",&p2.b);
  56.        
  57.         head=&p1;
  58.         p1.next=&p2;
  59.         p2.next=NULL;
  60.        
  61.         while(head!=NULL)
  62.         {
  63.                 printf("%s %d   %d\n",head->c,head->a,head->b);
  64.                 head=head->next;
  65.         }*/
  66. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-6-17 09:10:35 | 显示全部楼层

fflush(stdin); 不建议使用
只是清空的话
还是
  1. char ch;
  2. while((ch = getchar)!='\n');
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-6-17 09:11:20 | 显示全部楼层

顺带一提

   gets(p1.c);   
目测程序会出错的    没试过 (*^__^*) 嘻嘻……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-6-17 09:13:28 | 显示全部楼层
ryxcaixia 发表于 2015-6-17 09:12
妥妥的不会出错 刚试过

换成 char*不会出错 不可能吧????
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-6-17 09:15:46 | 显示全部楼层
ryxcaixia 发表于 2015-6-17 09:14
子非鱼焉知鱼之乐 请循其本
亲~请看楼主贴的代码~char*在注释里乖乖的躺着

好吧 ~~~没仔细看
我看了下就一个感觉 数组不像数组 链表不像链表~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-3 08:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表