我試圖創建一個程序來ecrypt字符串Ceasar的密碼,如果你不熟悉Ceasar密碼它是一個非常簡單的加密方法,它使用輸入字符串和數字「n」可以由用戶選擇,然後將整個字母n次移位。如果n = 1,那麼所有的A成爲B,等等。這個程序應該有應該由通過鍵盤輸入,並且必須由用戶以及選擇n個程序讀取的輸入串;和應該返回其中第一個字符表示第一字符UF未加密的字符串,然後以下字符應當是輸入字符串,利用由用戶所選擇的n個凱撒的Cypher加密的encypted版本的字符串。爲了簡潔起見,我還沒有在這篇文章包含在程序掃描n值,並調整它(它顯然具有比26更小)的代碼的一部分,我已經取消,以及該程序的一部分以大寫字母打開輸入字符串。問題與字符串打印
int main() {
int i, n;
char uncod[200] = {0};
char cod[200] = {0};
printf("insert the string to encript:");
scanf("%[0-9a-zA-ZSPACE]", uncod);
cod[0] = (char)uncod[0];
for(i == 1; i < 200; i++) {
sprintf(cod, "%d + n", uncod[i]);
if (cod[i] > 90) {
cod[i] = 64 + n;
}
if (cod[i] < 65) {
cod[i] = 91 + n;
}
};
printf("%s\n", cod);
}
這個程序應採取unencypted字符串的ASCII碼,加上或減去N到找到單純的分配TE權性質,它只是通過陣列上運行,並具有後分配到每個角色他cyphered反一部分分配給輸出字符串的第一個值爲輸入字符串的未加密的第一個字符。問題是,當我打印輸出字符串時,它只會打印第一個字符而忽略其餘字符。如何解決這個問題?
其一,'爲(I == 1 ... ' - 非常懷疑你的意思是在那裏進行邏輯等價比較,嘗試*賦值*而不是'='。第二,遲早你會發現循環應該運行到nullchar,而不是200. – WhozCraig
哦對不起......是一個錯字 – Defcon97
是的,它繼續con我發現如果發佈的代碼實際上是產生問題的代碼,那麼應該如何進行復制/粘貼操作。仍試圖弄清楚。 – WhozCraig