gpt4 book ai didi

c - 为什么我用 putchar(); 打印垃圾?在这个for循环中?

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:10 24 4
gpt4 key购买 nike

我正在尝试自学 C,正如您可能已经听过很多次一样,但我无法弄清楚自己做错了什么。我正在做的练习的重点是用指定数量的空格替换制表符。它应该是 unix 命令扩展的模仿。这是我到目前为止所拥有的:

#include <stdio.h>

int main (int argc, char *argv[])
{
int spacecount = atoi(argv[2]);
int i, d, b, g, toput;
char string[1000];

for (d = 0, b = 0; (string[d + b] = getchar()) != EOF; d++) {
if (string[d + b] = '\t') {
toput = d % spacecount;
for (i = 0; i < toput; i++) {
if (string[d + b] = '\n')
i = toput;
string[d + b] = ' ';
b++;
}
}
}
g = d;

putchar('\n');

for (d = 0; d < g; d++)
putchar(string[d]);
putchar('\n');
}

我运行它并开始打字,按 ctrl + d 结束(因为我使用的是 GNU/Linux)并让它打印垃圾字符。我用另一个字符串尝试了相同的第二个 for 循环,这个字符串在没有 if 语句的 for 循环中被分配了 getchar() ,它打印非垃圾字符。我想我真的很困惑。我做错了什么?

最佳答案

在你的编译器中启用警告,它真的应该给你一个关于这段代码的警告。

(string[d + b] = '\t') 应该是 (string[d + b] == '\t')

使用 gcc -std=c99 -pedantic-errors -Wall 编译。

关于c - 为什么我用 putchar(); 打印垃圾?在这个for循环中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16736763/

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