c - 如何逐个打印每个字符?
问题描述
我试图在一个有 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);
}
}
编辑:
这是头文件:
#define COLUMNS 4
#define ROWS 7
struct pagestruct
{
char page[COLUMNS];
};
解决方案
在这里你有这个功能。如果字符串由 终止,则" ."
它会将数据带到'.'
. 如果不是,它将数据最多行数和列数或字符串的末尾以避免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]);
}
}
推荐阅读
- java - 当我输入一个特殊值时,如何将程序执行到开头
- angular - 如果@Input 正在接收对象,ngOnChanges 不会触发
- javascript - 尝试在类中创建属性然后设置它们的值
- python - 如何从具有动态列的数据框中获取值
- python - JSON 未正确保存
- configuration - 部分或覆盖 asp.net 核心 appsettings 中的配置选项?
- c# - 循环在word文档中添加表格
- java - 当我尝试使用新的地方时出现问题-compat
- java - 如何将复选框的信息从视图发送到 Thymeleaf 中的控制器?
- reactjs - 使用 Next.js 8 和 styled-jsx 时的强烈 FOUC