繁体   English   中英

为什么我在 char 数组的末尾得到 i?

[英]why I am getting i at the end of char array?


#include<iostream>
#include<string.h>
using namespace std;
int main() {

    int n;
    cin>>n;
    char code[n];
    cin.ignore();
    cin.getline(code, n);

    int j=0;
    for(int i=0; i<n; i++) {

        if((code[i]>='A' && code[i]<='Z') || (code[i]>='a' && code[i]<='z')) {
            code[j] = code[i];
            j++;
        }
    }
    code[j] = '\0';
    cout<<code;
    return 0;
}

输入:

10
Ajith@#

预计 output:

Ajith

Acutal output 我得到:

Ajithi

为什么我在数组的末尾得到我? 我只需要打印忽略数字和特殊符号的字母。 请帮我解决这个问题

您告诉程序输入将是十个字符,包括空终止符。

然后你只输入七个字符。 空终止符留下数组的两个未初始化元素,这两个元素将具有不确定的值。

您的循环仍然使用所有十个字符,并且以任何方式使用不确定的值都会导致未定义的行为

可能发生的情况是,在您的程序认为是字符的空终止符之后有一些数据。

解决方案是std::string并且只迭代字符串的实际长度,复制到另一个std::string

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM