2015-11-05 3 views
-1

Если мой вход: лента Выход будет:C-программа: как напечатать строку, такую ​​как ...?

rn 
rion 
ribbon 

или если мой вход: гарри

hy 
hary 
harry 

Он должен выглядеть анимации текста и текст должен появиться один за другим (передняя и задняя буквы должны быть вначале).

Вот мой код, но он, похоже, не работает, так как он имеет выход из фронта.

#include <stdio.h> 
#include <string.h> 
#include <unistd.h> 

int main() { 
    char input[10]; 
    int front, back; 
    int n; //counter 

    n = strlen(input); 

    printf ("input\n"); 
    fgets (input, sizeof (input), stdin); 

    for (front=0,back=n-1; front<=((n-1)/2)||back>=(((n-1)/2)+1);front++,back--) { 
     if (front==0||back&&(n-1)) { 
      printf ("%c",input[front]); 
      printf ("%c", input[back]); 
      front++; 
      back--; 
      usleep (500000); 
     } 
     else { 
      if (front<=((n-1)/2)||back>=(((n-1)/2)+1)) { 
       front++; 
       back --; 
      } 
      else if (front==n) { 
       printf ("%c\n", input[front]); 
       printf ("%c\n", input[back]); 
      } 
     } 
    } 
    return 0; 
} 
+2

'n = strlen (input);' должно быть сделано после 'fgets' –

+1

Добро пожаловать в переполнение стека! Пожалуйста, найдите время (краткое!) Вводное [тур]. Можете ли вы изменить свой вопрос и добавить, каков ваш текущий выход? См. Также [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how-to-ask) в [help]. – usr2564301

+0

Пройдите код с помощью отладчика и посмотрите, можете ли вы определить проблему. – MicroVirus

ответ

0

Существует одна серьезная проблема: вы пытаетесь определить длину ввода до получения любого ввода.

так переключают такие строки:

printf ("input\n"); 
fgets (input, sizeof (input), stdin); 
n = strlen(input); 

Тогда ваш для цикла ... почему так тяжелое испытание, не

for (front = 0, back = n-1; front < back; ++front, --back) 

будет достаточно?

И наконец: остальная часть вашего кода. Пожалуйста, подумайте об этом еще раз. Вы хотите:

  • печать все символы от начала до и включая front
  • на печать все символы из обратно до конца
  • печати новой строки

Ваш код не делает ничего об этом , Но мы здесь не для того, чтобы решить вашу домашнюю работу;)

Последний намек: есть два разных типа остановки, и они зависят от того, будет ли ваша длина ввода четной или нечетной. (Мой предложенный тест должен быть в порядке, чтобы поймать оба, tho).

Смежные вопросы