gpt4 book ai didi

c - 在 C 中的凯撒密码中使用 argc 和 argv

转载 作者:行者123 更新时间:2023-11-30 19:11:01 26 4
gpt4 key购买 nike

因此,我尝试在凯撒密码中使用 argc 和 argv 以便仅使用 [./key ;string] 执行程序(例如 ./13 Caesar)。我尝试了很多方法,但我必须承认我真的迷失了。我想我应该只使用 main(void) 并使用 fgets 询问输入,但我仍然有一些好奇:我怎样才能使它与“int main(int argc, char *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;
}
}
}

最佳答案

使用 "%d" 说明符打印 argv 是未定义的行为,请阅读 printf() 的手册并使用 "%p"

另一方面,如果您想打印字符串,您应该使用数组表示法访问适当的元素。例如

printf("First Argument: %s\n", argv[1]);

这适用于所有参数,请注意 argv[0] 是在命令行中调用的可执行文件的名称。

在访问 argv[1] 之前,您还应该小心检查 argc > 2,并始终检查当前参数 + !。

关于c - 在 C 中的凯撒密码中使用 argc 和 argv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40795220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com