[英]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 == 2
, argv[0] == 'main.exe'
和argv[1] == 'asd'
。 有關命令行參數用法的更多詳細信息,請參閱解析C命令行參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.