C 我正试图开发一个程序,将我的消息(字符串)安排在一个x*宽度的矩阵中

C 我正试图开发一个程序,将我的消息(字符串)安排在一个x*宽度的矩阵中,c,arrays,C,Arrays,例如(如果宽度=5) 这是一个C程序。 这个和“”应该在第1行,其余的将转到下一行,依此类推 #include<stdio.h> int main(void) { int width; int i; char message[256]; scanf("%d",&width); scanf(" %s",&message); for( i = 1; i <= width; i++ ) { i

例如(如果宽度=5) 这是一个C程序。 这个和“”应该在第1行,其余的将转到下一行,依此类推

#include<stdio.h>

int main(void)
{
    int width;
    int i;
    char message[256];

    scanf("%d",&width);
    scanf(" %s",&message);
    for( i = 1; i <= width; i++ )
    {
        if( i == width )
        {
            printf( "\n" );
        }
        else
        {
            printf( "%s", message );
            i == width;
        }
    }
    printf( "\n" );

    return 0;
}
#包括
内部主(空)
{
整数宽度;
int i;
字符消息[256];
扫描频率(“%d”和宽度);
scanf(“%s”和消息);

对于(i=1;i使用
scanf
输入包含空格的字符串是一种晦涩且过于复杂的操作,因为它通常使用空格作为字符串分隔符-您将只获得“消息”的第一个单词

您需要迭代字符串的长度而不是“矩阵”的宽度,否则它将在一行之后停止。您只需每隔
width
个字符插入一个新行

循环的主体也没有什么意义,因为您只需打印
消息(多次),而不管其长度如何

#include <stdio.h>

int main(void)
{
    int width = 0 ;
    int i = 0 ;
    char message[256] = "" ;

    scanf( "%d", &width );
    fgets( message, sizeof(message), stdin ) ;

    while( message[i] != '\0' )
    {
        putchar( message[i] ) ;
        i++ ;
        if( i % width == 0 )
        {
            putchar( '\n' ) ;
        }
    }

    putchar( '\n' ) ;
}
#包括
内部主(空)
{
整数宽度=0;
int i=0;
字符消息[256]=“”;
扫描频率(“%d”和宽度);
fgets(消息、sizeof(消息)、stdin);
while(消息[i]!='\0')
{
putchar(信息[i]);
i++;
如果(i%宽度==0)
{
putchar('\n');
}
}
putchar('\n');
}

在大多数情况下,用户输入的一些有效性检查是有序的。

问题是什么?不清楚您试图做什么或问题是什么,但通常
for
循环将从
0
开始,就像
for(i=0;i在矩阵中排列意味着存储在矩阵数据结构中;您只需尝试在指定宽度的网格中显示它。家庭作业?第二个
i==width;
是一个条件测试,其结果您不使用。即使您打算
i=width;
也会强制
for
循环结束,所以我想知道是什么原因“是的,回路根本就在那里。@风向标:固定。