第一篇文章(如您所知)和表格告诉我,我的标题很糟糕,会被否决,但我不能做得更好:)我已经在这方面做了很多工作。
我正在尝试通过将命令行中给出的数字添加到字符串中来加密文本。
为什么
include <stdio.h>
int main(int argc, char * argv[])
{
printf("%i", argc);
char k = argv[1][0];
printf("%c", k);
char * s = "a";
printf("%c", s[0] + 0);
}
正确打印“a”(除了打印argc和k) 但是当最后一行是
printf("%c", s[0] + k);
它只打印 argc 和 k,然后什么也不打印。我希望它打印 20a
(运行 ./question 0
时)。
(我尝试过
char k = 0;
char * s = "a";
printf("%c", s[0] + k);
这确实有效:( ) 看来 k 来自 argv 是问题所在,但我不知道为什么(并不是我真正理解这些) 谢谢!
最佳答案
argv
和 argc
以及 "a"
都是转移注意力的东西。他们与这个问题无关。问题在于不理解两个字符值 '0'
和 0
之间的区别(后者也称为 '\0'
)。
为了理解其中的差异,我建议尝试这个程序:
#include <stdio.h>
int main(void) {
char a = 'a', b = '0';
printf ("as char: a=%c b=%c sum=%c\n", a, b, a+b);
printf ("as int: a=%d b=%d sum=%d\n", a, b, a+b);
}
对b
使用不同的值,包括0
、1
、'0'
和' 1'
看看会发生什么。
关于c - 为什么添加字符(来自 argv)会导致 C 中没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51793697/