команда puts() и указатель: не печатать

#c

Вопрос:

У меня есть следующий список:

 #include lt;stdio.hgt;  char strA [80] = "A string to be used for demonstration purposes";  char strB [80];  int main (void) {  char * pA;  char * pB;  puts (strA);  pA = strA;  puts (pA);  pB = strB;   putchar ('n');  while (* pA! = '')  {  * pB    = * pA   ;  puts (pB); lt;lt;lt;lt; line c  }  * pB = '';  puts (strB);  return 0;  }  

потому что, вставляя строку c, которая, согласно моим намерениям, должна печатать содержимое strA , увеличивая ее и переходя в начало каждый раз столько раз, сколько она проходит по массиву strA , она печатает только пустые строки, в то время как если вместо строки c я вставляю puts (pA);

Работает ли список , распечатывая содержимое strA , уменьшая его и поднимаясь наверх каждый раз столько раз, сколько strA занимает массив?

Комментарии:

1. Вы печатаете содержимое strB не strA . Вам нужно обнулить строку перед ее печатью, иначе она не является строкой и не может использоваться как таковая.

2. Какого результата вы ожидаете от этой программы?

3. @Lundin strB инициализируется значением 0.

4. Как уже упоминал Лундин, вы не печатаете strA «но strB «. Кроме того, вы печатаете pB после того, как увеличили его. Это означает pB , что указывает на местоположение за последним символом, с которого вы скопировали pA . Поскольку strB при запуске инициализируется значение 0, вы печатаете только пустые строки.

5. @Gerhardh Ах да, я не видел, что это переменные области действия файла из-за форматирования дискет. Но полагаться на статическую нулевую инициализацию хранилища для неявного завершения работы с нулем для вас-очень плохая практика.