繁体   English   中英

C程序不打印我期望的东西

[英]C program not printing what I'd expect

所以我决定学习C并用艰难的方式学习c。 无论如何,我尝试编辑其中一个示例,输出不是我预期的结果。 我从命令行调用程序为e14 asd“应该”打印:'e'== 101'a'== 97's'== 115'd'== 100

但是,它根本不打印'd'行。 我的代码是:

#include <stdio.h>
#include <ctype.h>

void print_letters(int argc, char *arg[])
{
    int i = 0;
    int j = 0;
    for(j = 0; j < argc; j++) {
        for(i = 0; arg[i] != '\0'; i++) {

            char ch = arg[j][i];
            printf("j is %d and i is %d\n", j, i);

            if(isalpha(ch) || isblank(ch)) {
                printf("'%c' == %d \n", ch, ch);
            }
        }
        printf("\n");
    }
}


int main(int argc, char *argv[])
{
    print_letters(argc, argv);
    return 0;
}

我假设问题与argv部分有关,但在环顾四周之后,我仍然不知道究竟是什么导致'd'没有出现。

如果有人能向我解释,我们将不胜感激。

谢谢!

for(i = 0; arg[i] != '\0'; i++) {

应该

for(i = 0; arg[j][i] != '\0'; i++) {
//            ^^^

循环退出条件应该迭代单个命令行参数的字符,但实际上是遍历参数。

在使用命令行参数之前,您应该知道argc计算参数的数量,而argv是用于存储参数的2-d数组。 在这种情况下,例如,如果exe文件名是main.exe并且在命令行中键入main.exe asd ,则参数的值应为: argc == 2argv[0] == 'main.exe'argv[1] == 'asd' 有关命令行参数用法的更多详细信息,请参阅解析C命令行参数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM