2014-12-01 4 views
0

Я пытаюсь написать программу, которая читает строку от пользователя и печатает символы строки в диагональном шаблоне. Я устанавливаю максимальную длину строки как 50 символов. Программа может печатать символы в диагональном шаблоне, но не корректно печатает символы.Как напечатать символы строки в диагональном шаблоне?

#include<stdio.h> 

int main() { 
    int i = 0, j = 0, m; 
    char c[50]; 

    printf("Enter a string: "); 
    scanf("%c", c); 

    m = sizeof(c)/sizeof(c[0]); 

    for (i = 1; i <= m; i++) { 
    for (j = 1; j <= i; j++) { 
     if (j == i) { 
     printf("%c", c[i-1]); 
     } else { 
     printf(" "); 
     } 
    } 
    printf("\n"); 
    } 
    return 0; 
} 
+0

Почему нельзя использовать 'STRLEN()' и напечатать в диагональном формате печати новой строки после того, как символ печатается и не печатать инкрементных пространств – Gopi

+1

'м = sizeof (c)/sizeof (c [0]); это избыточно, вы уже запрограммировали длину (50). – Maroun

+0

'scanf ("% c ", c);' вводит только один символ. – BLUEPIXY

ответ

1

Проверьте код ниже:

#include<stdio.h> 
int main() 
{ 
    int i=0,s=0; 
    char c[50]; 
    printf("Enter a string: "); 
    scanf("%s",c); 

    while(c[i] != '\0') 
     { 
      s = i; 
      while(s--) 
      printf(" "); 
      printf("%c\n",c[i]); 
      i++; 
     } 
     return 0; 
} 
+1

Я предложил 'char c [51];' .. 'scanf ("% 50s ", c);' 'printf ("% * c \ n ", i + 1, c [i]);' – BLUEPIXY

+0

@BLUEPIXY Прохладившись, просто по коду, который я видел, я пошел таким образом, чтобы показать, как это можно сделать. Снова с вашим кодом вам нужно объяснить, что «% *» я избегал этого :) – Gopi

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