2014-12-01 43 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