簡體   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