有個問題困擾多天了,讀取plt檔案,讀取方式和TXT檔案相同,得出很多資訊,如何能夠把PU和PD后面的坐標提取出來放到一個TXT檔案中
如類似這種IN;VS32,1;
VS32,2;
VS32,3;
VS32,4;
VS32,5;
VS32,6;
VS32,7;
VS32,8;
WU0;
PW0.350,1;
PW0.350,2;
PW0.350,3;
PW0.350,4;
PW0.350,5;
PW0.350,6;
PW0.350,7;
PW0.350,8;
LT;
SP1;
PU0 -1200;
PD1600 -1200;
PD1600 1200;
PD0 1200;
PD0 -1200;
SP0;
uj5u.com熱心網友回復:
先用分號(;)分割成好多子字串,然后查找PU,PD開頭的字串,找到后截取后面的坐標uj5u.com熱心網友回復:
fscanf %*[^0-9]%g 就可以了uj5u.com熱心網友回復:
沒有效果呀,出來的還是整體的東西,#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
FILE *fp;
char str[1024][1024];
char ch;
FILE *fpt;
fpt = fopen("C.txt","w");
if ((fp = fopen("char.plt", "r")) == NULL)
{
perror("fail to read");
exit(1);
}
while(!feof(fp))
{
fscanf(fp,"%*[^(-9)-9]%d",str);
while((ch=fgetc(fp))!=EOF)
{
fputc(ch,fpt);
}
printf("%s\n",str,fpt);
}
fclose(fp);
fclose(fpt);
return 0;
}
uj5u.com熱心網友回復:
試試正則運算式。uj5u.com熱心網友回復:
建議讀取之后,以';'為分隔符,分別分割。然后再用strncmp比較,選擇出PD或PU,然后再對其使用' '(空格)分割,最后atoi轉換為整型,即坐標值。uj5u.com熱心網友回復:
正則運算式可以嗎uj5u.com熱心網友回復:
建議讀取之后,以';'為分隔符,分別分割。然后再用strncmp比較,選擇出PD或PU,然后再對其使用' '(空格)分割,最后atoi轉換為整型,即坐標值。這個思路想到了,想到了用分號分割了,但是每行的長度不相同,總是只能出現第一行的效果,下面還是沒用。不過沒有用strncmp比較,而且atoi不知道是沒用好還是沒效果,出來的是空的。還是感謝大家的提醒uj5u.com熱心網友回復:
那就每行讀取一個固定長度,如果沒有讀取完全,可以考慮把這行的最后一個;組放到下一行里。
uj5u.com熱心網友回復:
fscanf就支持簡單的正則的uj5u.com熱心網友回復:
謝謝大家,已經寫出來了uj5u.com熱心網友回復:
plt檔案中的PW指令是什么含義啊??轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/214380.html
標籤:C語言
