gpt4 book ai didi

C输出太长

转载 作者:太空狗 更新时间:2023-10-29 15:40:06 24 4
gpt4 key购买 nike

我有一个关于我的小 c 程序的问题:

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

int main() {
int c, len;
int max = 100;
char *buffer = malloc(max);

for (len = 0; (c = getchar()) != EOF; len++) {
buffer[len] = c;
if (len == max - 1) {
buffer = realloc(buffer, (len + max));
if (buffer == NULL) {
printf("Error: Out of memory!\n");
return 1;
}
max += 100;
}
}
buffer[len] = '\0';

for (; len >= 0; --len) {
printf("%c", buffer[len]);
}

printf("\n");
free(buffer);
return 0;
}

我的任务是编写一个程序,插入文本并反向输出文本。如果分配的内存碰巧有问题,就会出现错误消息。根据我大学的测试报告,输出的第一行是 1 个字符太长,我无法确定这个问题的原因,我正在寻求一些建议和帮助

最佳答案

首先,你应该明白你的问题。您有以下诊断:

the first lines of the output are 1 character too long

这还不够!你应该举一个具体的例子。如果你给你的程序一些小的输入,例如abc,它会输出什么?它应该输出什么?这比“1 个字符太长”更不抽象,并且可以调试。


你的程序有一个差一错误:

buffer[len] = '\0';
...
printf("%c", buffer[len]);

它将输出的第一个字符将是一个空字符\0。它可能在屏幕上不可见(它是一个 "unprintable" 字符),因此要调试它,您最好使输出更详细,如下所示:

   printf("Character '%c', whose code is %d\n", buffer[len], buffer[len]);

请注意以下使调试更容易的功能:

  • 打印字符周围的撇号将清楚地表明您的代码在何处输出空格
  • 详细格式将清楚说明您的代码输出了多少个字符
  • 第二次将字符打印为整数 (%d) 将输出其代码并帮助您调试不可打印的字符

您的程序有不止一个错误。利用以上思路,逐一重现隔离bug。另请阅读 this .

关于C输出太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40842494/

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