为什么C++程序打印不相关的字符? 嘿,我是C++编程新手,我知道它的窍门,但我陷入了一个简单的问题:我想用字母A Z创建一个移位密码,把它移到3个地方,我得到了所有的东西,但是当我做输出时,我得到了多余的字母,比如[|我知道我必须放一个终结者,我放了,但似乎不起作用。这是我的程序草稿 #include<iostream> #include<iomanip> #include<cstring> #include<cmath> using namespace std; int main() { //char char caesar[]="THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG"; char cipher[255]; char lookup[26]; int key=3,i,index; for(i=0;i<26;i++) { lookup[i]= static_cast<char>(65+i); } for(i=0;i<43;i++) { if (caesar[i]>='A' && caesar[i]<='Z') { index= static_cast<int>(caesar[i])-65; cipher[i]=lookup[(index+key)%26]; } else cipher[i]=caesar[i]; } //Null Terminator cipher[i]!='\0' cout<<cipher<<endl; return 0; }

为什么C++程序打印不相关的字符? 嘿,我是C++编程新手,我知道它的窍门,但我陷入了一个简单的问题:我想用字母A Z创建一个移位密码,把它移到3个地方,我得到了所有的东西,但是当我做输出时,我得到了多余的字母,比如[|我知道我必须放一个终结者,我放了,但似乎不起作用。这是我的程序草稿 #include<iostream> #include<iomanip> #include<cstring> #include<cmath> using namespace std; int main() { //char char caesar[]="THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG"; char cipher[255]; char lookup[26]; int key=3,i,index; for(i=0;i<26;i++) { lookup[i]= static_cast<char>(65+i); } for(i=0;i<43;i++) { if (caesar[i]>='A' && caesar[i]<='Z') { index= static_cast<int>(caesar[i])-65; cipher[i]=lookup[(index+key)%26]; } else cipher[i]=caesar[i]; } //Null Terminator cipher[i]!='\0' cout<<cipher<<endl; return 0; },c++,string,null-character,C++,String,Null Character,您正在使用!=代替=,并且缺少一个 应该是: cipher[i]='\0'; 您正在使用!=代替=,并且缺少一个 应该是: cipher[i]='\0'; 这是你的实际代码吗?它没有编译在它当前的形式中,尽管它只是一个缺失;它阻止了编译。该行丢失了;看起来这也是问题,如果这是你的代码,但是,你不需要使用StasyType来从char转换成int。与问题不直接相关,但是你真的应该考虑USin。g std::string而不是char[]在C++中,不是我刚才提出的这个实际代码吗?它没有编译在它

您正在使用!=代替=,并且缺少一个

应该是:

cipher[i]='\0';
您正在使用!=代替=,并且缺少一个

应该是:

cipher[i]='\0';

这是你的实际代码吗?它没有编译在它当前的形式中,尽管它只是一个缺失;它阻止了编译。该行丢失了;看起来这也是问题,如果这是你的代码,但是,你不需要使用StasyType来从char转换成int。与问题不直接相关,但是你真的应该考虑USin。g std::string而不是char[]在C++中,不是我刚才提出的这个实际代码吗?它没有编译在它当前的形式中,尽管它只是一个缺失;它阻止了编译。这条线丢失了;看起来这也是问题,如果这是你的代码,但是,你不需要使用StasySkyCube从char转换成int。E问题,但是你确实应该考虑在C++中使用STD::string代替char []。