-1
我是編程新手。這是迄今爲止我寫的代碼。忽視加密本身的細節;我知道這需要更多的工作。當我嘗試運行該程序時,出現分段錯誤錯誤消息。如果argc != 2
我會得到消息,如果argc == 2
它打印出「關鍵字」,但它顯示相同的消息,並沒有完成程序,所以我認爲這個錯誤與引用argv [1]有關。我的Vigenere加密程序中的分段錯誤
#include<stdio.h>
#include<cs50.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
int main (int argc, string argv[])
{
int i = 0, n = strlen(argv[1]);
char KeyWord[i];
//makes sure command line has 2 arguements
if (2 != argc)
printf("argc != 2. Try again\n");
return 1;
//stores argv[1] as key
for (i = 0; i < n; i++)
{
KeyWord[i] = argv[1][i]; //malloc
printf("%c", KeyWord[i]);
}
printf("\n");
if (isalpha(KeyWord))
return 0;
else
{
printf("try again");
return 1;
}
int j, length;
printf("input data: ");
string message = GetString();
for (i = 0; i < n; i++)
{
for (j = 0, length = strlen(message); j < length; j++)
{
if (islower(message[j]))
message[j] = message[j] -97 + KeyWord[i];
if (isupper(message[j]))
message[j] = message[j] -65 + KeyWord[i];
}
if (i==n) i = 0;
}
}
'字符串的argv []'這是什麼? –
''提供'typedef char * string;' - 這就是'string argv []'的意思。 –