【发布时间】:2016-07-05 05:06:38
【问题描述】:
这是作业,所以我不是在寻找直接的答案,而是更多地寻找这背后的逻辑。我不认为这个问题对于新手 C 开发人员来说说得很好,我在这里找不到任何资源来帮助我。我是 C 的新手,更像是一个 Java 人,所以这看起来完全和完全没有意义。说明如下
- $ ./mixedupecho 你好!
- .H/EmLiLxOe!dHuEpLeLcOh!oH *
- 对于此程序,您可以忽略前两个以外的任何命令行参数(包括程序名称本身):
- $ ./mixedupecho 你好!更多啦啦啦
- .H/EmLiLxOe!dHuEpLeLcOh!oH *
- 注意“你好!”比“./mixedupecho”短,所以程序“环绕”
- 并在到达字符串末尾时从“H”重新开始。 *
- 如何实现?模 % 运算符是您的朋友。
- 特别注意,“HELLO!”[5] 产生 '!',而“HELLO!”[6] 超出了数组的范围。
- 但“HELLO!”[6 % 6] 的计算结果为“HELLO!”[0],结果为“H”。
- “HELLO!”[7 % 6] 计算结果为“HELLO!”[1] ...
下面是我到目前为止的代码。这会遍历我得到的 argv 字符串的每个字符。我没有得到的是如何打印它而不是序列 [0][0], [0][1], [0][2]... 我得到 [0][0], [ 1][0]、[0][1]...等
有人可以向我解释一下吗?
int main(int argc, string argv[])
{
for(int i = 0; i < argc; i++)
{
for(int j = 0, n = strlen(argv[i]); j < n; j++)
{
printf("%c", argv[i][j]);
}
}
printf("\n");
}
非常感谢!这让我发疯了!
【问题讨论】:
-
在我看来像是随机垃圾邮件。更新:嗯,不。乍一看。但是写描述的人脑子里一团糟。
-
“非常感谢!这让我发疯了!” - 不要说显而易见的。 (SCNR)
-
我想知道提供此类作业的机构名称。
-
这是LaunchCode赞助的cs50课程。
-
提示 #1:main 应该定义为:int main(int argc, char **argv);提示 #2:argv[0] 是程序的名称...如果您只打印命令行参数,您是否也应该包含程序的名称?