gpt4 book ai didi

替换所有制表符的代码,如果一个空格超过 1 个空格?

转载 作者:太空宇宙 更新时间:2023-11-04 01:35:38 25 4
gpt4 key购买 nike

这个问题在K&R ,练习 1.9。我写了下面的代码:

#include<stdio.h>
main()
{
int c,i=0,n=0;
while((c=getchar())!=EOF)
{
if(c!=' '||c!='\t')
{
i=0;
putchar(c);
}
else if(c==' '||c=='\t')
{
i++
}
if((c+1)!=' '||(c+1)!='\t')
n=i;
if(n!=0)
{
c=' ';
putchar(c);
}
}
}

但我无法获得所需的输出。我在 ubuntu 中使用 gcc。当我输入类似 hello\t\ta 的内容时,我的输出是 hello\_\_a 即制表符数被空格数替换,当我输入 hello\_\_a 然后我的输出与输入相同。

请帮助我或建议我一些新的东西以获得所需的输出。

最佳答案

与其给你完整的工作计划,我更愿意引导你走向正确的方向。

首先,c+1 并不表示“输入中的下一个字符”。它只是将 1 添加到 c 的值,这有效地将 c 转换为 ASCII table 中的下一个字符。 .比如c'a'c+1就是'b',也就是下一个字符int ASCII table , 如果 c 是表中代码为 32 的 ' ' (单个空格),则 c+1 '!' 在表中有一个代码 33。

好吧,要获得下一个角色,您需要阅读它!以同样的方式阅读第一个字符。实现此目的的最佳方法是始终保留先前读取的字符,并与当前读取的字符进行核对。

因此您需要两个变量,例如cpc。您读取字符并将其存储在 c 中。起初,pc'\0'。如果读取的字符不是空格或制表符,则将其写入输出。如果它是制表符,则将其更改为空格。如果是空格,则检查前一个字符 (pc)。如果不是空格,打印c。在循环结束时,您应该将 c 的值存储到 pc 中,这意味着您保存了 pc 中的前一个字符。

我想我已经告诉您完整的解决方案了!

关于替换所有制表符的代码,如果一个空格超过 1 个空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14998537/

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