编写C语言数组插入元素程序遇异常:输入非正整数终止但打印失败
问题分析与修复方案
嘿,我帮你找出代码里的两个关键问题啦,这就是为啥你看不到正确输入数值的原因:
1. 错误计算数组有效元素个数
你用int n = sizeof(data[i]);来获取数组长度,这完全不对哦!data[i]是单个int类型的元素,sizeof(data[i])得到的是int的字节数(通常是4),而不是你实际输入的元素个数。其实在第一个for循环结束后,变量i已经准确记录了有效元素的数量——因为每输入一个有效数i就加1,遇到<=0的数就break,直接用这个i就行。
2. 打印时错误输出了内存地址
你打印的时候写的是printf("%d ", &data[i]);,这里的&data[i]是取数组第i个元素的内存地址,不是元素的值!应该直接写data[i]才对。
修正后的完整代码
#include <stdio.h> int main() { int data[100]; int i; for (i = 0; i < 100; i++) { printf("Input your number:\n"); scanf("%d", &data[i]); if (data[i] <= 0) { break; } } printf("Your array:"); // 直接用循环结束后的i作为有效元素个数 for (int j = 0; j < i; j++) { printf("%d ", data[j]); // 去掉&,直接访问元素值 } return 0; }
另外小提醒:我把第二个循环的变量改成了j,避免和第一个循环的i混淆,当然继续用i也可以,但分开用可读性更好~
内容的提问来源于stack exchange,提问作者Sơn Lê Hoàng Thái
相关产品推荐
相关产品推荐

