Я пытаюсь извлечь данные из файла xml, избавиться от тегов xml и сохранить значения в текстовом файле (формат с разделителями табуляции), используя C. Мне удалось извлечь и изменить строку, но я не могу вставить строку в текстовый файл в формате с разделителями табуляции. Вместо того, чтобы получить текстовый файл, который должен выглядеть следующим образом:
x.xxxxxxx x.xxxxxxxx x.xxxxxxxx
Я получаю файл, который выглядит как
x.xxxxxxx
x.xxxxxxx
x.xxxxxxx
Я думаю, что это происходит из-за того, как я манипулирую строкой из формата x.xxxxxxx в формат x.xxxxxxx. Как новичок, я не совсем уверен, как обойти эту проблему. Что я могу сделать, чтобы это исправить?
Заранее спасибо.
#include <string.h>
#include <stdio.h>
#include <stddef.h>
#define MAX 10000
int main (int argc, char *argv[]){
FILE *fp;
char str[MAX];
char *c[MAX];
char *xcoor[MAX];
char *ycoor[MAX];
char *zcoor[MAX];
char *z;
int i =0;
if((fp = fopen("550.txt", "r"))==NULL){
printf("Cannot open file.\n");
exit(1);
}
while(!feof(fp)) {
while(fgets(str, sizeof str, fp)) {
*(c+i)=strdup(str);
i++;
}
}
fclose(fp);
int a = 0;
for(i=5;i<1700;i=i+17){
xcoor[a]=c[i];
a++;
}
int b = 0;
for(i=6;i<1700;i=i+17){
ycoor[b]=c[i];
b++;
}
char letterx = 'x';
char lettery = 'y';
char arrow1 = '<';
char arrow2 = '>';
char slash = '/';
for (i=0;i<100;i++){
z = *(xcoor+i);
int g = 0;
for(g;g<strlen(z);g++){
if(z[g] == letterx)
strcpy(z+g, z+g+1);
}
*(xcoor+i)=z;
}
for (i=0;i<100;i++){
z = *(xcoor+i);
int g = 0;
for(g;g<strlen(z);g++){
if(z[g] == arrow1)
strcpy(z+g, z+g+1);
}
*(xcoor+i)=z;
}
for (i=0;i<100;i++){
z = *(xcoor+i);
int g = 0;
for(g;g<strlen(z);g++){
if(z[g] == arrow2)
strcpy(z+g, z+g+1);
}
*(xcoor+i)=z;
}
for (i=0;i<100;i++){
z = *(xcoor+i);
int g = 0;
for(g;g<strlen(z);g++){
if(z[g] == slash)
strcpy(z+g, z+g+1);
}
*(xcoor+i)=z;
}
for (i=0;i<100;i++){
z = *(ycoor+i);
int g = 0;
for(g;g<strlen(z);g++){
if(z[g] == lettery)
strcpy(z+g, z+g+1);
}
*(ycoor+i)=z;
}
for (i=0;i<100;i++){
z = *(ycoor+i);
int g = 0;
for(g;g<strlen(z);g++){
if(z[g] == arrow1)
strcpy(z+g, z+g+1);
}
*(ycoor+i)=z;
}
for (i=0;i<100;i++){
z = *(ycoor+i);
int g = 0;
for(g;g<strlen(z);g++){
if(z[g] == arrow2)
strcpy(z+g, z+g+1);
}
*(ycoor+i)=z;
}
for (i=0;i<100;i++){
z = *(ycoor+i);
int g = 0;
for(g;g<strlen(z);g++){
if(z[g] == slash)
strcpy(z+g, z+g+1);
}
*(ycoor+i)=z;
}
FILE *agentfile;
agentfile = fopen("name.txt", "w");
for(i=0;i<100;i++){
fprintf(agentfile, "%s %s", *(xcoor+i), *(ycoor+i));
}
fclose(agentfile);
printf("I'm happy that the program ended fine");
return 0;
}