在成功運行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