Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何逐个打印每个字符?_C_Arrays_For Loop_Char_Header Files - Fatal编程技术网

C 如何逐个打印每个字符?

C 如何逐个打印每个字符?,c,arrays,for-loop,char,header-files,C,Arrays,For Loop,Char,Header Files,我试图在一个包含7行4列的表中逐个打印此数组中的字符。然而,我得到的唯一输出是每一列和每一行中的整个字母表。如何按所需顺序逐个打印每个字符? 请注意,该表应以空格和结尾 输出应如下所示: a b c d e f g h h i j k l m n o p q r s t u v w y z . 这是我的代码: struct pagestruct sequence[ROWS]; char alfabet[] = "abcdefghijklmnopqrstuvwxyz ."; for (in

我试图在一个包含7行4列的表中逐个打印此数组中的字符。然而,我得到的唯一输出是每一列和每一行中的整个字母表。如何按所需顺序逐个打印每个字符?
请注意,该表应以空格和
结尾

输出应如下所示:

a b c d
e f g h
h i j k
l m n o
p q r s
t u v w
y z   .
这是我的代码:

struct pagestruct sequence[ROWS];
char alfabet[] = "abcdefghijklmnopqrstuvwxyz .";

for (int i = 0; i < ROWS; i++) {
  printf("\n");
  for (int k = 0; k < COLUMNS; k++) {
    strcpy(sequence[k].page, alfabet);
    printf("%s", sequence[k].page);
  }
}

这里有函数。如果字符串以
结尾,则将数据带到
”。
。如果不是,则将数据带到行数和列数或字符串末尾以避免UB。如果字符串太短,表的其余部分将填充空格。当然,你可以在这一点上打破,但我不知道这是否是一个想法

因为你想填另一张桌子我也是这么做的

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

#define SIDANTAL    7
#define BYTE 4

int main(void)
{
    char alfabet[] = "abcdefghijklmnopqrstuvwxyz .";
    char sequence[SIDANTAL][BYTE * 2 + 1];
    char *end = strstr(alfabet, " .");
    size_t len = end ? (end - alfabet + 2) : strlen(alfabet), cpos = 0;

    for(size_t i = 0; i < SIDANTAL; i++)
    {
        for(size_t k = 0; k < BYTE; k++)
        {
            sequence[i][k * 2] = cpos < len ? alfabet[cpos] : ' ';
            sequence[i][k * 2 + 1] = ' ';
            cpos++;
        }
        sequence[i][BYTE * 2] = 0;
    }

    for(size_t i = 0; i < SIDANTAL; i++)
    {
        printf("%s\n", sequence[i]);
    }
}
#包括
#包括
#定义SIDANTAL 7
#定义字节4
内部主(空)
{
字符alfabet[]=“abcdefghijklmnopqrstuvwxyz。”;
字符序列[SIDANTAL][BYTE*2+1];
char*end=strstrstr(alfabet,“.”);
尺寸长度=末端(末端-阿尔法贝特+2):斯特伦(阿尔法贝特),cpos=0;
对于(大小i=0;i
什么是
pagestruct
?通过提供这一点,您将提供一个最小的示例。;)我将编写一个循环,从0到25运行
I
。每次循环时,我都会打印
alfabat[I]
,后面跟着一个空格。然后,如果
i
是4的倍数,我将打印一个
\n
。为了获得额外的学分,我不会在
\n
之前打印空格。这确实表明我对任何语言的编程都没有任何理解。嗯。。。好吧,更多的是关于算命,而不是C:)我必须说我觉得你回答了另一个问题。。。在原始问题中,您在哪里看到了序列数组类型?@OznOg我的朋友-没有结构声明,因此我无法使用它。我的答案100%回答了这个问题,请不要
T
struct pagestruct
可能类似于
struct pagestruct{char page[BYTE];}-可能是猜测。@rabbi76绝对不是
char page[BYTE]
#include <stdio.h>
#include <string.h>

#define SIDANTAL    7
#define BYTE 4

int main(void)
{
    char alfabet[] = "abcdefghijklmnopqrstuvwxyz .";
    char sequence[SIDANTAL][BYTE * 2 + 1];
    char *end = strstr(alfabet, " .");
    size_t len = end ? (end - alfabet + 2) : strlen(alfabet), cpos = 0;

    for(size_t i = 0; i < SIDANTAL; i++)
    {
        for(size_t k = 0; k < BYTE; k++)
        {
            sequence[i][k * 2] = cpos < len ? alfabet[cpos] : ' ';
            sequence[i][k * 2 + 1] = ' ';
            cpos++;
        }
        sequence[i][BYTE * 2] = 0;
    }

    for(size_t i = 0; i < SIDANTAL; i++)
    {
        printf("%s\n", sequence[i]);
    }
}