Yun_ZH 2021-06-06 11:10 采纳率: 75%
浏览 19
已结题

scanf把空格当成字符读入变量了,想问一下怎么修改

int  Input_data(struct GOODS goods[], int nInputtedNum) {

	int result;
	while (1) {
		//提示语句放到循环内,可能更好一些。
		printf("请输入数据(END结束入库),格式如下\n");
		printf("货物名 同类产品的数量 价格\n");

		//scanf的返回值警告,可自行决定
		scanf("%s,%d,%f", &goods[nInputtedNum].name, &goods[nInputtedNum].num, &goods[nInputtedNum].price);

		//如果用户在一行的开始输入了END,则表示用户要结束入库操作
		if (!strcmp("END", goods[nInputtedNum].name))
			break;

		//以下为处理scanf返回值的例子:即未成功输入一个数,则结束输入
		if (1 != scanf("%f", &goods[nInputtedNum].price))
			break;

		nInputtedNum++; //已完成一数据输入,库存数+1
	}
	return nInputtedNum;
}

这是输入数据的代码

void Print_data(struct GOODS goods[], int nInputtedNum) {
	//打印库存列表
	//可以自已写一个打印表头的语句
	for (int i = 0; i < nInputtedNum; i++) {
		//如何让打印的内容对齐,可自己思考??
		printf("%-5s %-5d %.3f\n", goods[i].name, goods[i].num,goods[i].price );
	}

	printf("Press any key to continue...\n");
	char ch = _getch(); //仅仅是屏幕暂停,此输入值无其它使用价值
	return;
}

这个是读取输入数据的代码.

想问一下哪里错误了,为什么程序总是把空格当成赋值给变量num,出现这种情况需要怎样更改呢?

  • 写回答

2条回答 默认 最新

  • 浪客 2021-06-06 11:21
    关注

    &goods[nInputtedNum].name

    name应该是个char数组,不需要加&

    评论

报告相同问题?

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP