[問題] 可否幫看哪邊出錯 囧
else if (argc==4&&!strcmp(argv[1],"-r"))
{
getpat(argv[2],pat1,pat2);
printf("getpat\n");///
while (fgets(tmp,100,fptr))
{
char *patfind=strstr(tmp,pat1);
for (i=0;&tmp[i]!=patfind;i++) printf("%c",tmp[i]);
printf("%s",pat2);
for (i+=strlen(pat2)*sizeof(char);
i<(int)(strlen(tmp)-strlen(pat1)+strlen(pat2)-1);i++)
printf("%c",tmp[i]);
}
}
void getpat(const char argv[],char pat1[],char pat2[])
{
int i,j;
for (i=0;argv[j]!='/';i++,j++) pat1[i]=argv[i];
pat1[i]='\0';
for (i=0,j++;argv[j]!='\0';i++,j++) pat2[i]=argv[j];
pat2[i]='\0';
}
文字檔的處理
這部分是replacement
我用的方法是
先把pat1 pat2(被取代的文字/取代後的文字)給讀出來 (副程式的作用)
然後用strstr去找到 file中正確字串的指標位置
找到後開始印pat2
然後從tmp[i+sizeof(char)*strlen(pat1)]開始繼續印
一直印到strlen(tmp)-strlen(pat1)+strlen(pat2)-1 結束
I am sad now
I am happy now
從tmp[5]開始作取代的動作 印出字串%s 此時i還在5
i+strlen(pat1) = 5+3 = 8 從tmp[8]開始繼續印到結束
然後又回去fgets新的檔案
我發現會錯誤的地方是
最後
I am sad now
I am sad very much 用happy取代
會變成
I am happy now
I am happy very much
ad (似乎是印出pat1的不完全字串)
l@? 0xxooxxoxxoxo...(以下全部亂碼)
最後seq
printf測試結果 他不會跳出while迴圈
是我的終止條件寫錯了嗎?
我目前自我感覺良好 不覺得有錯 囧
btw問一下
我之前用while(!feof(fptr))當終止條件 會出錯
都會多印一些怪字
比如說*str[2] 存的是hello world 他會多印一次world
orz
可以請高手幫幫忙嗎
--
Johannes Krauser II ◣◣ 殺 ◢◢ ◣ 強暴!強暴!強暴!強暴!強暴!強暴!
GO TO D.M.C 〈◥◣◢◤〉 ◥◣ 強暴!強暴!強暴!強暴!強暴!
デトロイト ハ▇ ▲ ▇ハ ▆▅▄▂▁▂▃▅▆▅
メタル ▏ ハ▄▃▄ハ ▏ ∵ ∵ ◤
▃▄▃ シティ▋ ノ◥ ◤ㄟ ▎ ∴ ◢
▋▊▍ ▏ ◣▂◢ ▏ φjeans1020
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.236.215
→
09/27 01:00, , 1F
09/27 01:00, 1F
→
09/28 16:41, , 2F
09/28 16:41, 2F
→
09/28 16:42, , 3F
09/28 16:42, 3F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章