gpt4 book ai didi

c - 使用 C 中的数组修复输出中的小错误

转载 作者:太空狗 更新时间:2023-10-29 16:11:35 25 4
gpt4 key购买 nike

我目前正在做一个项目,当给定一个调用另一个函数 confab() 的主函数时,输出一系列字符。这个问题指的是一些虚构的种族。他们选择一个介于 2 和消息长度的一半之间的整数 nRows,例如长度为 11 的消息将允许 nRows 的值在 2 到 5 的范围内。然后将消息写下网格的列,每个网格单元格中有一个字符,每列中有 nRows,直到所有消息字符都被使用。这可能导致最后一列仅被部分填充。然后按行读出消息。

例如,nRows 为 3 的消息“不要等到最后一天再开始”将返回:

D'wtnlhltabo ai.ota t ea yersrnn iuit sd fettg

我已经编写了相当有效地执行此操作的代码,但是我得到了一个我似乎无法解决的测试用例。

 char buffer[8] = {'*','*','*','*','*','*','*','*',};
confab("ABCDEF.", 3, buffer);
printf("%s\n", buffer);

是这个例子,它应该给出的输出是:

AD.BECF

但是我的代码返回:

AD.BECF*

由于 outText 缓冲区中的额外 * 未被替换为字符。我已经尝试了很多事情,例如删除这个额外的 *,或者将 outText 重新初始化为与 inText 相同的长度(在代码中,因为不允许编辑提供的主要案例),但是到目前为止没有任何区别.

我想知道是否可以对我的代码进行快速编辑以执行此更改,因为除了编辑不允许的主输入之外我似乎找不到其他方法。

我的代码如下:

/*
* Confabulons.c
* A program to encode for the Confabulons
*
* August 8th 2015
*/

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

//A simple function confab which given input text, and a number
//of rows, returns a phrase in the Confabulons encoding scheme.

void confab(const char inText[], int nRows, char outText[])
{
int count = 0;
int i = 0;
int z = 0;
int len = strlen(inText);

while (z < nRows)
{
while (((int)inText[count] > 0) && (count < len))
{
outText[i] = inText[count];
i ++;
count = count + nRows;
}
z ++;
count = z;
}
}

最佳答案

在函数末尾添加一行:

outText[i] = '\0';

关于c - 使用 C 中的数组修复输出中的小错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31891297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com