그래서 [[./ key; string] (예 : ./ 13 Caesar)으로 프로그램을 실행하기 위해 Caesars 암호에서 argc 및 argv를 사용하려고합니다. 나는 많은 방법으로 시도해 왔지만, 나는 정말로 여기에서 길을 잃었다는 것을 인정해야한다. 나는 main (void)을 사용하고 fgets로 입력을 요청해야한다고 생각했지만, 나는 여전히 "int main (int argc, char * argv [])"으로 작동하도록 만들 수 있을까? 네가 나 한테 줄 수있는 단서가 있니?C에서 시저 암호의 argc 및 argv 사용
도움 주셔서 감사합니다.
#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;
}
}
}
가
출력 :
$ ./ceasar 13
argc =2
argv =-13216
key =0
k =0
Invalid key.
편집 : 미정 않음
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;
}
}
}
키 varibale을 초기화하지 않았습니다.'key = strtol (argv [1], NULL, 0)'을 사용해보십시오. 그리고 왜 그것을 했습니까? printf ("argv = % d \ n", argv);'? – freestyle
및 충분한 인수가 전달되었는지 argc를 점검하십시오. 그러면 argv [2]는 여러분의 말이고 여러분은 잘 가게됩니다. –