我正在尝试自学 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() 的字符串,它打印非垃圾字符。我想我真的很困惑。我究竟做错了什么?