2014-12-01 90 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 2014-12-01 16:40:47

+1

'M = sizeof(c)/ sizeof(c [0]);'這是多餘的,你已經硬編碼了長度(50)。 – Maroun 2014-12-01 16:41:06

+0

'scanf(「%c」,c);'只輸入一個字符。 – BLUEPIXY 2014-12-01 16:43:02

回答

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 2014-12-01 16:57:50

+0

@BLUEPIXY很酷的代碼,我看到我用這種方式來展示如何做到這一點。再次用你的代碼,你需要解釋什麼'%*'我是否避免了:) – Gopi 2014-12-01 17:08:48