如何通过C中的argv [1]进行索引?

时间:2016-01-26 01:03:18

标签: c argv

如果我有:

#include <stdio.h>

int main(int argc, char *argv[]) {
    int length = strlen(argv[1]);

和argv [1]只是一个单词,例如“hello”,我如何向后索引并逐字打印?

我尝试使用strrev,但显然这不是在linux中,而是包含我宁愿仅通过argv [1]向后循环的函数。

我试过了:

int i;  
for (i = length; i == 0; i--){

    printf("%c", argv[1][i]);
}

但我知道在我执行它之前这是错误的。

3 个答案:

答案 0 :(得分:3)

  

如何向后索引并逐字打印

int i;  
for (i = strlen( argv[1] ) - 1 ; i >= 0; i--){
    printf("%c", argv[1][i]);
}

此外,您当然需要#include <string.h>来处理与strlen等字符串相关的功能。

答案 1 :(得分:1)

函数strlen将返回数组/字符串中的字符数,但是,最后一个元素不是返回的值,而是length = strlen(argv[1]) - 1

我也相信你的for循环:

for (i = length; i >= 0; i--){ //Note the change of i==0 to i >= 0

答案 2 :(得分:1)

虽然接受的答案有点可以,但不应该这样。

#include <stdio.h>

int main(int argc, char *argv[]) {
    int length = strlen(argv[1]);

这在3个帐户中不正确:

  1. 首先不检查是否存在argv [1],最好是 通过确保argc == 2
  2. 来修复
  3. 使用了strlen,但不包含string.h。你确定你正在编译并启用了警告吗?
  4. 一个有点风格但仍然重要的评论是,如果你要多次使用argv(而且你是),那么字符串应该存储在某个地方。一般来说,在解析参数的初始阶段之后,你不想依赖于argv或argc