gpt4 book ai didi

字符与 C 中输入的比较

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:45 24 4
gpt4 key购买 nike

我是一个 C 业余爱好者,我的任务是编写一个接受命令行参数的程序,其中一个参数必须是字符“N”或字符“A”。这是我认为有效的方法:

//check argv[2], valid should be 1 at this point if argv[1] is an integer
printf("Valid is currently: %d, valid);
printf("The second argument is: %s, argv[2]);
if(argv[2] != "N" && argv[2] != "A") { valid = 0; }
printf("Valid is currently: %d, valid");

给定输入 ./a.out 4 A,并在给定的 if 语句前后使用 printf 语句,我得到以下输出:

Valid is currently: 1
The second argument is: A
Valid is currently: 0

我认为只有当 argv[2] 不是“N”或“A”时,这才会有效地使有效-无效位无效,但它不起作用。然后我尝试在类似的代码片段中使用 strcmp,但结果不成功。

这是我在 C 中的第一次尝试,所以请保持温和,但我已经尝试了从将 " 更改为 ' 的所有方法,使用 strcmp 而不是 !=,甚至使用 atoi,虽然我不知道我是否正确使用了它。C 字符串输入或比较中是否有一些固有的东西我是不明白?

最佳答案

要将其作为字符串进行比较,请尝试:

if (strcmp(argv[2], "N") != 0 && strcmp(argv[2], "A") != 0)
// can be reduced to:
if (strcmp(argv[2], "N") && strcmp(argv[2], "A"))

或者你也可以把它作为一个单独的字符来比较:

if (argv[2][0] != 'N' && argv[2][0] != 'A')

但这可能不是通用的。

关于字符与 C 中输入的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15869618/

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