我正在嘗試製作一個程序,當用戶輸入他們想要對argv[2]
進行加密/解密的字符串時,它將進行加密和解密,併爲argv[3]
輸入「加密」或「解密」。這裏是我試圖編譯和運行,截至目前使用命令行參數解密和加密文本
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
int i;
// char *string;
char *key_ch;
char key_int;
char *string_ = calloc(80, 1);
string = argv[1];
char encrypted_string[strlen(string)];
char decrypted_string[strlen(string)];
//char *key_ch;
//char key_int;
string = argv[1];
key_ch = argv[2];
key_int = atoi(key_ch);
if (argc < 3)
{
printf("Not enough arguments!\n");
exit (1);
}
if (strcmp(argv[3], "encrypt") == 0)
{
i = 0;
while(i <= strlen(string)-1)
{
encrypted_string[i] = string[i] + key_int;
i++;
}
// printf("Encrypted string: ");
i = 0;
while (i <= strlen(string) -1)
{
printf("%c", encrypted_string[i]);
i++;
}
printf("\n");
}
if (strcmp(argv[3], "decrypt") == 0)
{
i = 0;
while(i <= strlen(string) -1)
{
decrypted_string[i] = string[i] - key_int;
i++;
}
// printf("Decrypted String: ");
i = 0;
while (i <= strlen(string) -1)
{
printf("%c", decrypted_string[i]);
i++;
}
printf("\n");
}
return 0;
}
當我嘗試編譯它沒有-Wall
命令它編譯罰款,但代碼時,我跑我得到一個分段錯誤,當我編譯程序與-Wall
我正在
sam0.c:9:24:警告: '字符串' 在這個函數中使用的未初始化[-Wuninitialized]
炭encrypted_string [strlen的(字符串)];
任何人都可以照亮這個錯誤嗎?謝謝
編輯: 更改我的代碼爲您的建議。即使在使用「-Wall」時,我也沒有收到編譯錯誤,但是在我的程序中的某處它正在導致我得到一個分段錯誤......任何想法?我把引號放在我改變我的代碼的地方以供參考,以防我做錯了。
問題是在你最近的編輯中,你創建了兩個字符串變量的變體:'char * string_',然後你在其他地方使用'string'。讓他們都一樣。 – ryyker