c++填充数组问题
C++ filling array issue
我有一个基于用户输入填充数组的函数
程序在这个测试用例中工作得很好,但是它要求用户多输入一个数字。
void fill_array(char a[], int size)
{
char next;
const char SENTIEL ='.';
int index=0;
cin >> next;
while ((next !=SENTIEL) && (index < size))
{
a[index] = next;
index++;
cin >> next;
}
cout << a[0];
cout << a[1];
cout << a[2];
cout << a[3];
cout << a[4];
cout << a[5];
cout << a[6];
cout << a[7];
cout << a[8];
cout << a[9];
}
int main()
{
int const MAX=10;
char b[MAX];
fill_array(b,MAX);
}
返回正确的数字,但它还有一个问题。
在循环外请求cin >> next
(1次),然后请求cin >> next
(size
)时间,这导致:size + 1次。
您应该使用for循环(当然要删除外部的cin >> next
):
for (int index = 0; (next !=SENTIEL) && (index < size); index++)
{
a[index] = next;
cin >> next;
}
请更改:
while ((next !=SENTIEL) && (index < size))
{
a[index] = next;
index++;
cin >> next;
}
while ( ( cin >> next) && ( next !=SENTIEL) && ( index < size))
{
a[index] = next;
index++;
}
也删除循环外的第一个cin >> next;
,并显然初始化next
,这是OK的
用SENTIEL
以外的字符初始化next
,然后在index
递增之前读取next
。
char next = ' ';
const char SENTIEL ='.';
int index=0;
while ((next !=SENTIEL) && (index < size))
{
cin >> next;
a[index] = next;
index++;
}
你也可以这样做,
while ((index < size) && ((cin>>next) && next!=SENTIEL) )
{
a[index] = next;
index++;
}
如果第一个输入是SENTIEL,你将不会进入循环
相关文章:
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 输入std::数组时出现问题
- 类对象数组的问题会导致崩溃
- 传递二维数组时出现问题
- 从 C++ 中的函数返回数组地址问题
- 使用数组时出现问题
- 打印问题.我在数组中打印值时遇到一些问题
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 将字节数组转换为带有字节序问题的指针
- C++ 填充数组时遇到问题
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 当我尝试通过 arduino 上的引用传递布尔数组时出现问题
- 我正在尝试解决一个需要数组总和值但代码不起作用的问题,我想做这样的事情
- 编写 cin.get() 以接收字符数组时出现问题
- 在 C++ Consol 中的数组中执行用户命令时出现问题
- 存储另一个函数返回的布尔数组时遇到问题
- 当我在 CLion 中读取数组中的 txt 文件时C++编码问题
- 运行时C++数组初始化问题
- 我在解决此错误时遇到问题.我正在努力在主函数中传递数组