在成功运行entabulator之后,我的detabulator将不会选择应该退出while循环的字符比较。将“0(制表符)8(进入)(ctrl + D)”作为输入后,制表符被正确写入空格,但rp递增后指向8,应读取8的while循环不会退出我得到一个seg故障。这里的代码:C:字符比较失败
#include <string.h>
#include <stdio.h>
#define MAXLINE 100
char doc[9001];
main(int argc, char *argv[])
{
int max = 0;
char *rp = doc;
char *wp = rp;
char *tf = wp;
char *lp = doc;
while ((*(rp++) = getchar()) != EOF);
*--rp = '\0';
rp = doc;
j = 0;
while ((*rp != '\0') && (argc == 1)) {
if (*rp == '\n') {
lp = rp + 1;
*wp++ = *rp++;
}
while((*rp != '\t') && (*rp != '\0') && (*rp != '\n')) { /*this loops after a tab*/
*wp++ = *rp++;
}
if (*rp == '\t') {
rp++;
tf = lp + ((((wp - lp)/8) + 1) * 8);
while ((tf - wp) != 0)
*wp++ = 's';
}
}
if (*rp == '\0')
*wp = '\0';
printf("%s\n", doc);
}
你说得对,我看不懂的输入,因为我已经覆盖它。谢谢。 – user3003268