如何更改值char

时间:2013-03-06 04:32:09

标签: c++ char

我编写了这个C ++代码,编译时没有错误,但是在我有bug之后。我怎样才能做到这一点?

int main() {
int a=0;
for(a=0;a<=9;a+=1)
{
cout<<a<<"\n";
char ssss[] = "hello";
ssss[1]=a;
cout<<ssss<<"\n";
}
return 0;
}

当前输出为:

enter image description here

2 个答案:

答案 0 :(得分:3)

如果不符合规格,则只有一个错误。而且,由于你没有提供规范如何采取行动,我们不得不猜测。

当您将字符ssss[1]设置为整数值09时,字符'0'到{{1}而是(至少在ASCII中),它是一些控制字符,如'9'是水平制表符。

这可能会使您的输出看起来很奇怪。

你可以清楚地看到这一点,对于0,你得到9(因为0是字符串终结符)。

对于1到4和6,您会看到十六进制代码输出。 5是h字符,所以我不确定它在做什么。 7是ASCII铃声字符,所以你应该听到一声哔哔声,8是退格,这就是ENQ覆盖初始llo,9是水平制表符的原因,导致进一步的输出从下面的标签开始停止。

如果您想通过h使用字符 '0',请将'9'循环更改为:

for

按照以下计划:

for (a = '0'; a <= '9'; a++)

输出:

#include <iostream>

int main (void) {
    char str[] = "hello";
    for (int code = '0'; code <= '9'; code++) {
        str[1] = code;
        std::cout << code << ": " << str << '\n';
    }
    return 0;
}

答案 1 :(得分:1)

这将执行并提供这样的输出

0 h 
1 hllo 
2 hllo 
3 hllo 
4 hllo 
5 hllo 
6 hllo 
7 hllo 
8 hllo 
9 h   llo

这是因为当a = 0时,它为末尾分配一个空字符,因此输出仅为h。并且在9处它会在{1}}(制表符)中放置一个{1}}(制表符),因为9的ASCII相当于制表符。