C++ 数组不存储在第一个空间之外
通过temp提供的输入是一个句子,我需要删除空格和特殊字符,但“mes”只存储第一个单词C++ 数组不存储在第一个空间之外,c++,arrays,input,character,C++,Arrays,Input,Character,通过temp提供的输入是一个句子,我需要删除空格和特殊字符,但“mes”只存储第一个单词 #include <iostream> #include <cmath> using namespace std; int main(){ char mes[51]; char pas[11]; char tem[51]; cin.getline(tem,51); cin.getline(pas,11); for(int i=0;i<51;i++){ mes[i]='\
#include <iostream>
#include <cmath>
using namespace std;
int main(){
char mes[51];
char pas[11];
char tem[51];
cin.getline(tem,51);
cin.getline(pas,11);
for(int i=0;i<51;i++){
mes[i]='\0';
}
for(int t=0;t<sizeof(pas);t++){
pas[t]=tolower(pas[t]);
}
for (int i=0;i<50;i++){
char c=tem[i];
int ch=(int)c;
if(( ch >= 65 && ch <= 90) || ( ch >= 97 && ch <= 122)){
if( ch >= 65 && ch <= 90)
ch+=32;
mes[i]=(char)ch;
}
else
continue;
}
cout<<mes<<endl;
#包括
#包括
使用名称空间std;
int main(){
char-mes[51];
char-pas[11];
char-tem[51];
cin.getline(tem,51);
cin.getline(pas,11);
对于(int i=0;i请注意,您正在将mes
中的每个索引设置为'\0'
,也称NUL
。当您在tem
中迭代检查每个字符是否为字母时,您无意中在mes
中通过\0
分隔单词。您需要有一个单独的索引,允许您添加t当你找到信时,他会给你写信
您的for
循环可能如下所示
int currentIndex = 0;
for (int i = 0; i < 50; i++){
char c = tem[i];
int ch = (int)c;
if(( ch >= 65 && ch <= 90) || ( ch >= 97 && ch <= 122)){
if( ch >= 65 && ch <= 90)
ch+=32;
mes[currentIndex++]=(char)ch;
}
else
continue;
}
int currentIndex=0;
对于(int i=0;i<50;i++){
char c=tem[i];
int ch=(int)c;
if((ch>=65&&ch=97&&ch=65&&ch)应该有用:无关:ch>=65
对读者来说包含的信息最少。它也完全依赖于使用的ASCII编码,通常是一种安全的赌注,但为什么要赌博呢?更喜欢ch>=a'
。