程序为什么输入第一次scanf,之后就停止不动了?

程序为什么输入第一次scanf,之后就停止不动了?,第1张

已改,看注释

#include<stdio.h>

void main()

{

int i,j,kint *a

printf("请输入数组的个数")

scanf("%d",&i) //不能写\n在scanf里面

a=(int *)malloc (sizeof(int) * i)

printf("%d个数\n",i)

for(j=0j<ij++)

{

printf("请输入数字:\n") //漏了个分号

scanf("%d",&k) //不能写\n在scanf里面

a[j]=k

printf("\n")

}

}

scanf需要输入指针是一个已经分配的地址,因为scanf不会为你自动分配内存的,你的char *没有初始化,所以会卡死(实际上是程序崩溃了)

可以考虑char c[1000]这里1000是个很大的数,保证足够容纳输入的数据,然后再scanf("%s", c)

scanf("%s

%d",p->name,p->ID)这一句有错误,应该是scanf("%s

%d",p->name,&(p->ID))使用scanf时要取变量的地址修改后的代码如下:#include<stdio.h>

struct

student

{

char

name[10]

int

ID

}

typedef

struct

student

student

main()

{

student

stu[3],*p

int

i

p=stu

FILE

*fp

fp=fopen("d:\\plane.txt","ab")

for(i=0i<3i++)

{

printf("请输入第%d个学生的信息,姓名

学号:\n",i+1)

scanf("%s

%d",p->name,&(p->ID))

p++

}

for(i=0i<3i++)

fwrite(&stu[i],sizeof(student),1,fp)

fclose(fp)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11195437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存