scanf一问!

cssin 2001-06-13 07:14:00
我在编程序时,想提示用户按行输入二维数组的各个元素!
用了一个嵌套循环:
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
scanf("%f",&a[i][j]);
编译时通过,但是一执行就包非法操作,最后跟踪到了这里!

请问这是怎么回事??
有解决办法吗?
...全文
342 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
joe_fox1025 2001-06-22
  • 打赏
  • 举报
回复
高手云集,懂了很多!
cssin 2001-06-21
  • 打赏
  • 举报
回复
多谢各位了!

给分了!
bluexiaoyi 2001-06-17
  • 打赏
  • 举报
回复
sscanf的功能是扫描一个串
格式是sscanf(line,format,&var1,&var2....)
fgets读取一行,放在line中,sscanf函数处理它。format和函数printf格式串相同。
starsoft007 2001-06-17
  • 打赏
  • 举报
回复
确实有这样的错误
我也没有搞懂
在for语句前加一个
scanf("%f",a[0][0]);
后就没问题了
cssin 2001-06-17
  • 打赏
  • 举报
回复
多谢各位的帮忙!

bluexiaoyi兄:能否帮我解释一下sscanf的作用和用法??
cdws222 2001-06-15
  • 打赏
  • 举报
回复
float a[2][2];错了你是用的for(i=0;i<=2;i++)
如果用for(i=0;i<2;i++),就没错,
解决方法:
1.将a[][]扩大,比如a[3][3];
2.将<=改为<
llhwan 2001-06-15
  • 打赏
  • 举报
回复
把程序贴出来看看,说不定是其它地方的错误
bluexiaoyi 2001-06-15
  • 打赏
  • 举报
回复
书名写错了
是《实用c语言》
bluexiaoyi 2001-06-15
  • 打赏
  • 举报
回复
下面是我从老外写的《使用c语言教程》上看到的:

函数scanf工作原理和printf类似,但scanf只读数字,不写数字。
它提供了一种简单容易的读取方式,但因为它对结束行处理的不好,对专业人士几乎没有用处!

那本书上的解决方法就是用fgets函数和sscanf函数合用,替代scanf函数,如我上面所写的。
我不知道能不能解决 cssin 的问题,只是拿出来共享一下,让大家知道!
qingsong99 2001-06-15
  • 打赏
  • 举报
回复
我也遇到这种情况,当你循环输入一个或多个字符类型时,将出现意想不到的结果,或是当你对循环输入一个整型变量和字符变量时也同样出现令你意想不到的结果。
bluexiaoyi 2001-06-15
  • 打赏
  • 举报
回复


char line[100];
for(i=0;i<=2;i++)
for(j=0;j<=2;j++){
fgets(line,sizeof(line),stdin);
sscanf(line,"%f",&a[i][j]);} //注意是 sscanf 不是scanf !

请你现在再试一下!!!好吗?

cssin 2001-06-15
  • 打赏
  • 举报
回复
难道真的是程序其他地方有问题?
不可能啊!

、偶在提示用户输入后用了下面的代码:
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
printf("%d ",a[i][j]);
exit()
结果没有打印输组就非法了!
说明只可能是上面的程序出了问题!
各位认为呢?
soon 2001-06-15
  • 打赏
  • 举报
回复
tc3.0 编译运行也没问题。

#include <stdio.h>
main()
{
float a[2][2];
int i,j;
/*scanf("%f",&a[0][0]);*/
for(i=0;i<2;i++)
for(j=0;j<2;j++)
scanf("%f",&a[i][j]);
printf("\n");
for(i=0;i<2;i++)
for(j=0;j<2;j++)
printf("%f\n",a[i][j]);

}
cssin 2001-06-15
  • 打赏
  • 举报
回复
难道就此认为是TC的问题??
soon 2001-06-15
  • 打赏
  • 举报
回复
vc编译运行没问题。

#include <stdio.h>
main()
{
float a[2][2];
int i,j;
scanf("%f",&a[0][0]);
for(i=0;i<2;i++)
for(j=0;j<2;j++)
scanf("%f",&a[i][j]);
printf("\n");
for(i=0;i<2;i++)
for(j=0;j<2;j++)
printf("%f\n",a[i][j]);

}
cssin 2001-06-15
  • 打赏
  • 举报
回复
哪位大哥来回答一下吧!
cssin 2001-06-15
  • 打赏
  • 举报
回复
joe_fox1025:
按照ahphone所说,似乎可以!
或许这是TC本身的毛病!
sqsw 2001-06-15
  • 打赏
  • 举报
回复
joe_fox1025 2001-06-15
  • 打赏
  • 举报
回复
看来这种错误经常出现,我的一个程序也是这样的错误,也不知道为什么,你能把你的程序贴出来吗?我比较一下,也许能发现错误!
cssin 2001-06-15
  • 打赏
  • 举报
回复
多谢各位回答小弟的问题!
原题是要求一个3*3矩阵的对角线之和!
在开始提示用户按行输入矩阵的各元素:
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
scanf("%f",&a[i][j]);
运行时报错:floating point not link
abnormal terminate!

PS:因为我是在网吧上的网,所以记不住原码~
加载更多回复(18)

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧