给字符串添加空格

2023-12-02

我正在尝试为每个空格添加一个空格,直到column = 0。我不知道该怎么做。

问题如下。如果你看报纸,你会发现文章的内容很适合专栏。写一个程序 它读取报纸中栏的宽度,然后读取一行文本。对齐文本行以适应 该宽度的列。当你的程序运行时,屏幕应该看起来像这样:

Enter the width of the column: 40
Enter a line of text: Good morning how are you?
12345678901234567890123456789012345678901234567890...
Good     morning     how     are    you?

论证是通过计算文本中的间隙数量来完成的。在上面的例子中,有 4 个间隙。然后每个间隙都必须添加空格。额外空间的数量必须尽可能均匀地分配。在上面的示例中,前三个间隙各有 5 个空格,最后一个间隙有 4 个空格。

Notes:

  1. 如果文本比列长,那么您必须报告错误 - 不要尝试将其分成两行!
  2. 假设文本中包含多个单词。
  3. 请注意标题行由 123456789012345678.... 组成,这对于检查结果很有用。 您可以根据需要将此标题行设置为任意长度 – 70 个空格是有用的长度。

Thanks

#include <stdio.h>

int clear_input_buffer(void);

int column;
int c;
int g;
int e;
int space;
int length;

char line[40];

int main(){

    g = 0;

    printf("enter width of column\n");
    scanf("%d", &column);

    printf("enter line of text\n");
    clear_input_buffer();
    gets(line);

    c = 0;

    while(c <= column){
        if(g <= 9)
        {
            printf("%d", g);

            g = g + 1;
            c = c + 1;
        }
        else
        {
            g = 0;
            printf("%d", g);
            g = g + 1;

            c = c + 1;
        }
    }

    printf("\n%s", line);

    space = 0;

    length = 0;

    for( e = 0; line[e] != '\0'; e++ )
    {
        length = length + 1;
        if( line[e] == ' ' )
        space = space + 1;
    }

    column = column - length;

    for( e = 0; line[e] != '\0'; e++ )
    {
        if((line[e] == ' ') && (column > 0))
        {
            add space to here
            column = column - 1;
        }
    }

    printf("%d\n", space);

    printf("%d", length);

    printf("%s", line);


}

int clear_input_buffer(void) {
    int ch;
    while (((ch = getchar()) != EOF) && (ch != '\n')) /* void */;
    return ch;
}

这就是我做的。这远非理想,但你明白了。 您只需输入条件(例如当输入的字符串大于或等于 40 个字符时)即可跳过该过程。

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

int main(void)
{
int i = 0;  // first just initialiaze stuff
char ch[40]; // memset the arrays, get the string
memset(ch, '\0', 40);
gets(ch);

int diff = 40 - strlen(ch);
int spaces = 0;
while(i<strlen(ch))
{
    if(*(ch + i++) == ' ')  // count the number of words/spaces between words
    spaces++;
}
char finalt[40];
memset(finalt, '\0', 40);

i = 0;

diff /= spaces;  // diff is the number of spaces to be added between every word

i = 0;
int j = 0;  // j is for the finalt array
int k = 0;  // k  counts through the while, to put in spaces
printf("%d\n", diff);
while(i<40)    // just squeeze in the spaces
{
    if(ch[i] == ' ') {while(k<diff){ finalt[j++] = ' '; k++;} k = 0;}
    else {finalt[j] = ch[i]; j++;}
    i++;
}

printf("%s\n", finalt); // print the result
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

给字符串添加空格 的相关文章

随机推荐

  • CSS 2.1 规范:不折叠父级边距的基本原理(当父级是浮动的或具有除可见之外的溢出时)

    The CSS 2 1 规范 第 8 3 1 节在折叠边距上指出 建立新块格式化上下文的元素的边距 例如 因为浮动和带有 可见 以外的 溢出 的元素 不会 与他们流入的孩子一起崩溃 我花了一段时间才意识到块格式化上下文是 由父母建立并应用于
  • Spring security 自定义 FilterInitationSecurityMetadataSource 实现 403 禁止问题

    简而言之 我正在尝试实现一个自定义 FilterInitationSecurityMetadataSource 以便使用 spring security 5 0 6 和 Spring Boot 2 0 3 在我的 Web 应用程序中动态保护
  • 在 Symfony 2 中使用 gzip / 压缩而不使用 mod_deflate

    我正在研究两个不同的Symfony 2 8项目运行在不同的服务器上 它想使用压缩来加快加载速度 我找到的所有资源都指向mod deflate 但是虽然第一台服务器不提供mod deflate根本 第二个服务器无法使用mod deflate
  • 使用 Powershell Out-Printer 到文件时控制输出位置

    我有一个 Powershell 脚本 它从服务器上的文件夹中检索所有图像文件 jpg png 并将它们 打印 到一个文件 特别是使用特定打印驱动程序的 prn 文件 所有这些都运行良好 问题是我无法弄清楚如何控制 打印 的输出的位置 即它将
  • 如何在 vb.net 中闪烁/闪烁任务栏图标?

    我需要使我的 vb net 应用程序能够在应用程序中收到通知时闪烁 闪烁以吸引用户的注意 就像此图中的 DW 图标一样 我已经在谷歌上搜索了一段时间 并尝试了各种代码示例 但都没有成功 这是我到目前为止所得到的 Public Class F
  • [[NSDate date] keep] 和 [[NSDate alloc] init] 之间的区别

    由于以下两者具有相同的目的 today NSDate date retain and today NSDate alloc init 那么它们之间有什么区别呢 这里的任何事情都与内存分配方法有关 或者其他什么是相应地使用它们的原因 NSDa
  • 如何左右对齐 Flexbox 列?

    使用典型的 CSS 我可以将两列中的一列向左浮动 另一列向右浮动 中间有一些装订线空间 我该如何使用 Flexbox 来做到这一点 http jsfiddle net 1sp9jd32 container width 500px borde
  • Perl:V 5.8.8:在 CentOS5/RHEL5 上找不到 auto/XML/LibXSLT/new.al

    我正进入 状态 无法找到 auto XML LibXSLT new al 我的 CentOS5 机器上安装 Perl 5 8 8 时出错 此问题与 libxml2 和 perl 模块有关XML LibXML XML LibXSLT 对于 1
  • 为什么在函数调用中捕获对象的值?

    当您单击此代码时 应该会弹出一个带有图像编号的警报 for var i 0 i lt 10 i img i click function alert i 你可以看到它不起作用http jsfiddle net upFaJ 我知道这是因为所有
  • DIV 未显示在 Chrome 中

    我刚刚做了一个非常简单的网站 但遇到了问题 在 Firefox 和 Safari 中 我可以看到 id 为 sponsors 的 DIV 但在 Chrome 中它消失了 我在Mac上 有人有解决办法吗 http www tweetup vn
  • 异常:[!]您的应用程序正在使用不受支持的 Gradle 项目

    我正在尝试运行现有的 flutter 应用程序 但收到此异常 我该如何解决这个问题 例外 您的应用程序正在使用不受支持的 Gradle 项目 要解决此问题 请通过运行创建一个新项目flutter create t app
  • HTTP 到 HTTPS 重定向不适用于现有规则

    我已经做了三天了 没有任何结果 我有一个现有的 http 网站 它有很多重定向规则 具体取决于 URL 友好链接 我现在需要强制加载到 https Google 最终会将它们从索引中删除 但有很多指向我的第三方网站页面的链接无法物理改变 下
  • 在 Haskell 中生成斐波那契数?

    在Haskell中 如何根据第n个斐波那契数等于第 n 2 个斐波那契数加上第 n 1 个斐波那契数的性质生成斐波那契数 我见过这个 fibs Integer fibs 1 1 zipWith fibs tail fibs 我不太明白这一点
  • 如何在 R 中提取 1x1 数组切片作为矩阵?

    我正在使用 3D 阵列 函数从用户处获取 2D 数组切片 矩阵 并使用行和列名称 数组的相应暗名称 将其可视化 如果数组维度 gt 1 它就可以正常工作 但是 如果我有 1x1x1 数组 我无法将切片提取为矩阵 a lt array 1 c
  • 左操作数为负数时未定义的行为

    几天前 我在那里参加了微软 GD 实习在线考试 我一直在研究负数左移是一种未定义的行为 但该论文的 30 个问题中几乎有 7 个问题与移位运算符相关 其中大约 5 个问题涉及将负数向左移动 而且他们没有选择说 未定义 行为 看到这一幕我很震
  • 使用 Andengine 绘制圆

    我正在寻找一种使用 Andengine 画圆的方法 正如我所看到的 我只能绘制线条 矩形和放置精灵 但我找不到绘制圆形的方法 我怎样才能做到这一点 事实上 你不能直接画一个圆 替代方案是 渲染具有圆形纹理的四边形 请参见这个链接 例如 渲染
  • 升级后文件丢失

    我安装的是1 1版本 我使用 1 2 版本创建了升级 在这两种产品中我都有 2 个文件
  • 如何拦截提交按钮的点击?

    我有一个表单和一个提交按钮 我想快速检查一些字段 如果未填写某个字段 则空白其他一些字段 我不想更改按钮的 HTML 我只想在 jQuery 中执行此操作 而不向按钮添加任何 onclick 属性 HTML
  • 无效的密钥哈希 facebook android sdk

    我正在尝试使用 Facebook Android SDK 开发一个带有 Facebook 登录按钮的简单应用程序 但我在密钥哈希方面遇到了麻烦 我已经创建了调试密钥和发布密钥 在 mac 中 调试键 keytool exportcert a
  • 给字符串添加空格

    我正在尝试为每个空格添加一个空格 直到column 0 我不知道该怎么做 问题如下 如果你看报纸 你会发现文章的内容很适合专栏 写一个程序 它读取报纸中栏的宽度 然后读取一行文本 对齐文本行以适应 该宽度的列 当你的程序运行时 屏幕应该看起