【问题标题】:Reading string character by character in C在C中逐个字符读取字符串
【发布时间】:2014-11-22 05:14:10
【问题描述】:

所以我有一个字符串传递给主函数: int main(int argc, char* argv[])

我了解 argc(在这种情况下为 2),但不明白如何逐个字符地读取 argv[]? 当我打印 argv[0] 时,不应该打印该字符串的字符数组中的第一个字符吗?

谢谢

【问题讨论】:

  • 命令行传递的值以argv[1]开头。第一个字符是argv[1][0]
  • argv[] 是一个字符串数组(以空字符结尾的字符数组)。因此 argv[0] 给出了第一个字符串。要获取第一个字符串的第一个字符,请使用 *argv[0] 或 argv[0][0]。

标签: c arrays string char main


【解决方案1】:

样本

#include <stdio.h> 

int main(int argc, char *argv[]){
    int i,j;
    for(i=0; i<argc; ++i){
        for(j=0; argv[i][j] != '\0'; ++j){
            printf("(%c)", argv[i][j]);
        }
        printf("\n");
    }
    return 0;
}

【讨论】:

  • 谢谢,我发誓我尝试过同样的事情,但没有成功。 ++i 与 i++ 有什么区别吗?我无法理解其他人的解释。
  • 请分享无效的代码。不,在 this 上下文中,前置或后置增量运算符没有区别。如果它是被赋值或评估的表达式的一部分,它确实会有所不同,而不是单独的增量操作。
  • @aNobody 你应该把你问问题时不能正常工作的代码一起发布。
  • @aNobody ++i 和 i++ 有什么区别吗? : 如果单独运行没有太大区别。
  • @aNobody ++i 的效率要低得多,因为不需要为返回值分配额外的存储空间。
【解决方案2】:

再举一个例子:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (int argc, char *argv[])
{
    if(argc != 2)
    {
        //argv[0] is name of executable
        printf("Usage: %s argument\n", argv[0]);
        exit(1);
    }
    else
    {
        int i;
        int length = strlen(argv[1]);
        for(i=0;i<length;i++)
        {
            printf("%c",argv[1][i]);
        }
        printf("\n");
        return 0;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多