Первая версия
То, что вы хотите, это использовать argc:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char **argv)
{
int i = 0;
int j = 0;
for (i = 0; i < argc; i ++)
{
j = 0;
while(argv[i][j] != '\0')
printf("Argument %d letter %d : %c\n", i,j,argv[i][j++]);
}
return 0;
}
Вывод на самом деле буквенно-буквенный, как вам нужно:
$./a.out hello world
Argument 0 letter 1 : .
Argument 0 letter 2 : /
Argument 0 letter 3 : a
Argument 0 letter 4 : .
Argument 0 letter 5 : o
Argument 0 letter 6 : u
Argument 0 letter 7 : t
Argument 1 letter 1 : h
Argument 1 letter 2 : e
Argument 1 letter 3 : l
Argument 1 letter 4 : l
Argument 1 letter 5 : o
Argument 2 letter 1 : w
Argument 2 letter 2 : o
Argument 2 letter 3 : r
Argument 2 letter 4 : l
Argument 2 letter 5 : d
Вторая версия:
Вы можете использовать обозначение указателя для j
, но не для i
, так как вы не знаете количество букв каждого аргумента.Конечно, это может быть достигнуто с помощью strlen
, что приведет к итерации по строке для подсчета буквы, а это не то, что вы хотите сделать.Если вы можете сделать это за одну итерацию аргумента, зачем делать это за две?
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char **argv)
{
int i = 0;int j = 0;
while(i < argc)
{
j=0;
while(*(argv[i]+j) != '\0')
{
printf("Argument %d letter %d : %c\n", i,j,*(argv[i]+(j)));
j++;
}
i++;
}
return 0;
}