C++怎么输入任意的整数到一维的数组里面去

Str_5 2014-12-07 06:57:35
求帮助,我用
for(m=0;a[m]!='\n';++m)
{
scanf("%d",&a[m]);
}
a[m]='\0';
为什么不行?
...全文
4905 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jacksonfan 2014-12-09
  • 打赏
  • 举报
回复
for(m=0;a[m]!='\n';++m)
{
scanf("%d",&a[m]);
}
a[m]='\0';
你这for条件就有问题,a数组有数据么?

int n = 0;
int m = 0;
while(cin>>n)
{
a[m] = n;
m ++;
}
「已注销」 2014-12-07
  • 打赏
  • 举报
回复
我整理了一篇关于控制台程序开发方方面面的内容,你下载后参考一下,着重看输入部分,可以找到你想要的答案,不理解可以发邮件给我wyz5@163.com 下载链接如下: http://download.csdn.net/detail/wadeyz/3405252
瞭望天空 2014-12-07
  • 打赏
  • 举报
回复
而'\0'对应的值是0。当读入字符的时候才可以用'\0'
ChinaOrangeBoy 2014-12-07
  • 打赏
  • 举报
回复

#include "stdafx.h"

#include <stdlib.h>


int main(int argc, char **argv)
{
	int nSize = 0;
	printf("总数:");
	scanf("%d", &nSize);
	int *pInt = new int[nSize];

	for (int i = 0; i < nSize; i++)
	{
		printf("输入第%d个数:", i+1);
		scanf("%d", pInt+i);
	}

	for (int i = 0; i < nSize; i++)
	{
		printf("输出第%d个数:", i+1);
		printf("%d\n", *(pInt+i));
	}

	system("pause");
	return 0;
}
sysphius 2014-12-07
  • 打赏
  • 举报
回复
先分析问题:(1)scanf会忽略空白符(空格,换行或者其他不可见符号),你的换行符是读不到的,死循环是唯一归宿 (2)还有一个很坑的地方就是,for语句先检查其中条件是否满足,再执行语句,再累加变量,你还没给a[m]赋值就判断了,比较的数组中单元的初始值,基本上也会死循环,偶尔砸中'\n'才会跳出循环 解决方案:(1)按照你的循环思路,用getchar去读字符(它不会忽略空白符),下面粗略改了下你的循环: char a[100]; int m; for(m=0;a[m - 1] != '\n';++m) { a[m] = getchar(); } a[m]='\0'; (2)你要读一个字符串,没必要这么折腾,直接scanf("%s" , a)就完事了,或者直接用C++里面的string类都可以简洁解决问题,这么手工逐位读取符号再在末尾添加‘\0’是很容易错误的(error prone)的。 打卡回宿舍,记得给点分,谢谢。
LuckyBug 2014-12-07
  • 打赏
  • 举报
回复
程序读入的是一个整数,而'\0'对应的值是0。当读入字符的时候才可以用'\0'。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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