![](/img/trans.png)
[英]Why I am getting varied results when using sizeof for same char array?
[英]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.