#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 Ах да, я не видел, что это переменные области действия файла из-за форматирования дискет. Но полагаться на статическую нулевую инициализацию хранилища для неявного завершения работы с нулем для вас-очень плохая практика.