Also versuche ich argc und argv in Caesars Chiffre zu verwenden, um das Programm mit nur [./ key; string] (z. B. ./ 13 Caesar) auszuführen. Ich habe es auf viele Arten versucht, obwohl ich zugeben muss, dass ich hier wirklich verloren bin. Ich dachte, ich sollte einfach main (void) benutzen und die Eingabe mit fgets machen, aber ich habe immer noch eine gewisse Neugierde: Wie könnte ich es mit "int main (int argc, char * argv [])" arbeiten lassen? Irgendwelche Hinweise, die du mir geben kannst?Verwenden von argc und argv in Caesar-Chiffre in C
Vielen Dank für Ihre Hilfe. Hier ist der Code mit den Stromausgängen:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
int key;
int result;
char str[60];
int k = 0;
printf("argc =%d\n", argc);
printf("argv =%d\n", argv);
printf("key =%d\n", key);
if (argc != 2)
{
printf("You didn't enter a key.\n");
return 1;
}
else
{
int k = key % 26;
printf("k =%d\n", k);
if (k == 0)
{
printf("Invalid key.\n");
return 1;
}
}
}
Ausgang:
$ ./ceasar 13
argc =2
argv =-13216
key =0
k =0
Invalid key.
Edit: Vorläufiger Antwort
int main(int argc, char* argv[])
{
int i;
int key = atoi(argv[1]);
int result;
char str[60];
for (i = 0; i < argc; i++)
{
printf("argv[%d] = %s\n", i, argv[i]);
}
if (argc != 2)
{
printf("You didn't enter a key.\n");
return 1;
}
else
{
if (key == 0)
{
printf("Invalid key.\n");
return 1;
}
}
}
Sie haben Schlüssel varibale nicht initialisiert, versuchen Sie 'key = strtol (argv [1], NULL, 0)' '. Und warum hast du das gemacht? Printf ("argv =% d \ n", argv); '? – freestyle
und überprüfen Sie argc, um sicherzustellen, dass genügend Argumente übergeben werden. Dann ist 'argv [2] 'dein Wort und du bist gut zu gehen. –