我刚买了K&R的《The C programming language》,并尽我所能做其中的练习(如果你知道这本书,那就是练习1.20)。
该程序旨在从键盘获取输入,并将制表符转换为由 TABLEENGTH 指定的适当数量的空格。
代码如下。当我尝试运行它时,出现分段错误。
detab.c:
#include <stdio.h>
#define TABLENGTH 8
#define MAXLINE 1000
int getline(char line[], int len);
int main()
{
char line[MAXLINE];
int length;
while((length = getline(line, MAXLINE)) > 0) {
printf("%s");
}
}
int getline(char line[], int len)
{
int i = 0;
int c;
for(i = 0; i < (MAXLINE - 1) &&
((c = getchar()) != EOF && c != '\n'); i++) {
// if c is tab, replace with spaces
if(c == '\t') {
while((TABLENGTH - (i % TABLENGTH)) != 0) {
line[i] = ' ';
i++;
}
i--;
continue;
}
}
line[i] = c;
}
if(c == '\n') {
line[i] = c;
i++;
}
line[i] = '\0';
return i;
}