c语言中用scanf函数先输入字符串,后输入数值。输出时会出现错误的数值,怎么解决

#include <stdio.h>#include <stdlib.h>#include <malloc.h>typedef struct node{char name[10]; long data[10];struct node *next;}LNode,*LinkList;
LinkList Create(LinkList head){LinkList p;head=(LinkList) malloc (sizeof (LNode));p=head;int i=0; while(i<3){p->next=(LinkList) malloc (sizeof (LNode)); p=p->next;printf("请输入名字:\n");scanf("%s%*c",&p->name);printf("请输入号码:\n");scanf("%d",&p->data,&p->data);i++;}printf("录入完成!\n");return head;}void Print(LinkList head){LinkList p;p=head; int j=0;while(j<3){p=p->next;printf("%s:%d\n",p->name,p->data);j++;}}main(){LinkList head;head=Create(head);Print(head);system("pause");}

}

#include<stdio.h>
int main()
{
char str[50];
int a;
scanf("%s%d",str,&a,&a);
printf("str=%s\n",str);
printf("a=%d\n",a);
return 0;
}

你下面的代码我给你改了一下,把%s%d之间的空格去掉了,然后加了一个&a,通过两次赋值,消除缓冲中回车的干扰追问

试过了。不行,请看看我现在发的代码吧,运行一下。。谢谢

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-04-27
char buf[200];
int i;
scanf("%s %d",buf,&i);
这样应该可以,注意字符串不能包含空格。追问

你好,谢谢您的回答,请帮忙看看我的这个代码好吗

取得时候没问题,是输出的时候有问题,不是想要的答案。。

追答

代码里没用到scanf?

追问

子函数里有的

追答

看了你的 代码,打印函数有问题。不是打印指针,而应该打印第一个变量。见下:
printf("%s:%d\n",p->name,p->data[0])

第2个回答  2013-04-09
scanf()函数是个阻塞函数,只有等待你输完之后,才能把缓冲区中的数据交给内存。有可能是你的输入有问题,另外scanf()中一般不要有格式控制,他是个不安全的函数。
第3个回答  2013-04-08
#include<stdio.h>
int main()
{
char str[50];
int a;
scanf("%s %d",str,&a);
printf("str=%s\n",str);
printf("a=%d\n",a);
return 0;
}

追问

你好,谢谢您的回答,请帮忙看看我的这个代码好吗

追答

能不能把代码发全啊

第4个回答  2013-04-08
请把你的程序贴上来,这样才能帮你解答,这样太宽泛了。错误之处有很多呢!追问

贴了,请您看看吧

相似回答