2010-09-17 14 views
1

Эй, я новичок в программировании на C++, и я получаю зависание, но я застрял в этой простой проблеме. Я полагаю, чтобы создать сдвиговый шифр, используя буквы A-Z и переместив их на 3 места, я получаю все, кроме когда Я делаю свой вывод, я получаю дополнительные буквы, которые не нужны, как "|[|" Я знаю, что мне нужно поставить терминатор, и я сделал, но, похоже, не работает. Вот мой черновик моей программы.Почему эта программа на C++ печатает нерелевантные символы?

#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; 
} 
+0

Это ваш фактический код? Он не компилируется в его текущей форме (хотя это просто отсутствует ';', который предотвращает компиляцию). Однако строка, в которой отсутствует символ ';', также будет проблемой, если это ваш код. – eldarerathis

+0

вам не нужно использовать 'static_cast' для преобразования из' char' в 'int'. –

+0

Нет, это было что-то, что я только что придумал – Eric

ответ

8

Вы используете = вместо =, а также есть недостающий !;

cipher[i]!='\0' 

должно быть:

cipher[i]='\0'; 
+0

спасибо, я получил его на работу, – Eric

+0

@ Эрик: Приятно это знать. Вы можете отметить ответ, как принято. – codaddict