首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

简单的单链表创建,但是为什么输入会把换行符也输进去.解决办法

2012-04-04 
简单的单链表创建,但是为什么输入会把换行符也输进去...输入的时候会把空格符,换行符也一起当做输入输进去

简单的单链表创建,但是为什么输入会把换行符也输进去...
输入的时候会把空格符,换行符也一起当做输入输进去,然后输出就显示内存无法读取
搞不明白为什么,各位帮帮忙,谢谢了 代码在下面:
#include "stdio.h"
#include "stdlib.h"

\\结构体
struct data  
{
 int i;
 struct data *next;
};

struct data *head= NULL;

\\主函数
void main()
{
  struct data *p, *q, *tail ;
  int n=5, m;
  int c;

\\尾插法建表
  for(m=1; m<5; m++)
  {
scanf("%d", &c); \\这里输入 ,调试发现如果输入:2+(回车or空格),
  下次循环到这里就跳过,然后C的数值显示为相应的ASC码
  p=(struct data*)malloc(sizeof(struct data));  
if( p ==NULL)
{
printf("error");
exit(EXIT_FAILURE);
}
  p->i= c;
  if(head == NULL)
{
head =p;
tail =p;
}

else
  {
tail->next=p;
tail=p;
}

  }
  for(q==NULL; q!=NULL; q=q->next) \\输出 会跳出窗口,说该内存不能为read ,怨念啊....
printf("%d", q->i);
  
}

[解决办法]
忘记添加p->next=NULL了吧???
[解决办法]
for(q==NULL; q!=NULL; q=q->next)
前后矛盾啊!这个循环怎么成立?
q 的初值和条件!
还有就是P->NEXT需要赋值为=NULL;

[解决办法]
我把你的程序改了一下,现在可以了[code=C/C++][/code]

#include "stdio.h"
#include "stdlib.h"
//结构体
typedef struct data
{
 int data;
 struct data *next;
}LNode,linkList;

//尾插法建表
linkList *creatLink()
{
linkList *head;
head = (linkList*)malloc(sizeof(LNode)); 
head = NULL;
linkList *tail,*P;
int n=5, m;
int c;
for(m=1; m<n; m++)
{
scanf("%d", &c); //这里输入 ,调试发现如果输入:2+(回车or空格),
//下次循环到这里就跳过,然后C的数值显示为相应的ASC码
P=(linkList*)malloc(sizeof(LNode));
if( !P)
{
printf("error");
exit(EXIT_FAILURE);
}
P->data= c;
if(head == NULL)
{
head=P;
tail =P;
}
else
{
tail->next=P;
tail=P;
}

  }
  tail->next = NULL;
return head;
}

void print_link(linkList *head)
{
linkList *p = head;
for(; p!=NULL; p=p->next) //输出 会跳出窗口,说该内存不能为read ,怨念啊....
printf("%d", p->data);
}
//主函数
int main()
{
linkList *head;
head = creatLink();
print_link(head);
return 0;

热点排行