Итерация по символу в C - PullRequest
       29

Итерация по символу в C

0 голосов
/ 23 марта 2020

Я из сообщества Фортран, так что простите, что задаю такой простой вопрос.

У меня есть следующее:

 char temp_line[250];
  char *line;

  // read in a file and get first line 
    line = fgets(temp_line, 250, fp) ; 

    // Now I want to iterate through each character in line 
    // my line in reality reads: "H AR    "
    // So I want to get from the loop my first increment will be H, then empty string, then "A" then "R" etc. 

    // I am doing following 
     for (int j =0; line[j] != '\0';j++) printf("%i : %s",j, &line[j])

   // the results is:

   // 0 : H AR    
   // 1 :  AR 
   // 2 : AR
   // 3 : R

Похоже, это происходит в обратном направлении. Может кто-нибудь объяснить новому C разработчику, почему это происходит, и как я могу достичь своей цели?

1 Ответ

3 голосов
/ 23 марта 2020

%s печатает строку с нулевым символом в конце, т. Е. Несколько символов, начинающихся с указателя на один из аргумента printf, пока не встретится нулевой символ.

Если вы хотите напечатать один символ, вам нужно %c, и тогда соответствующий аргумент printf должен быть int (или повышен char), а не char*, поэтому просто line[j], а не &line[j].

Кроме того, вы должны проверить возвращаемое значение fgets против нуля, чтобы убедиться, что оно успешно.

...