gpt4 book ai didi

c - K&R C 练习 1-18 无输出/调试问题

转载 作者:行者123 更新时间:2023-11-30 17:04:55 25 4
gpt4 key购买 nike

我在 Code::Blocks 中编写了以下代码,作为对 K&R C 练习 1-18 的响应:

Write a program to remove trailing blanks and tabs from each line of input, and to delete entirely blank lines.

我的意思是删除空白和制表符(我还没有解决空白行部分)。 while 循环正确地将输入保存到字符数组 ip,但是,代码的其余部分似乎不起作用,因为 EOF 没有根本没有非法的任何输出。

#include <stdio.h>
#define MAXLINE 1000

main(){
int c, z;
char ip[MAXLINE];

z = 0;

while ((c = getchar()) != EOF) {
ip[z] = c;
++z;
}

for (z = 0; ip[z] == ' ' || ip[z] == '\t'; ip[z] = ip[z + 1]);
printf("%s", ip);

}

我试图使用这个问题作为学习调试器的一种方式,但在第 14 行添加断点、打开监 window 口并按开始箭头后,没有任何反应。我的断点处没有出现黄色箭头,我的步骤选项呈灰色,并且我的变量名称及其值都没有显示在监 window 口中。

非常感谢有关修复我的代码的建议,但我真正想知道的是我正在做或没有做的事情阻止了调试器帮助我。

最佳答案

如果您没有看到任何输出,那么这可能是因为您的程序陷入了 for 循环:for (z = 0; ip[z] ...,如果字符串 ip 以两个连续的空格和/或制表符开头。

删除某个字符的算法如下:

有两个变量来索引字符串中的位置:目标和源。该代码将位于外循环内。源索引将在内部循环中迭代,直到找到不是必须删除的字符或空字符之一的字符。然后将源索引中的字符分配给目标索引。然后,代码检查源索引是否达到空字符,如果达到则中断外循环。两个索引都会递增,然后重复外循环。

伪代码:

remove = '\t'
string
source = 0
destin = 0

while
while string at source equals remove and not-equals null character
source++
string at destin = string at source
if string at source equals null character
break
source++
destin++

关于c - K&R C 练习 1-18 无输出/调试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35517937/

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