23. januar 2004 - 16:29
Der er
6 kommentarer og
1 løsning
fjerne tegn fra en streng
Hej. Jeg har en lang streng der ligger i et array på 100000 pladser.
Denne streng indeholder delstrenge der er spereret af \n.
Jeg ville høre om der var nogle der havde en smart ide til at tage hver enkelt delstreng ud 1 ad gangen.
fjerne højst mellem 0 og 3 karakterer fra den, og skrive strengen ud.
En understreng kan have følgende udseender
<mappe>
</mappe>
hej.txt
Jeg er interresseret i at fjerne tegnene < og > og /.
Den store samlede streng ser fx. sådan her ud :
<mappe>\n
hej.txt\n
<mappe2>\n
hej1.txt\n
</mappe2>\n
</mappe>\n
Nogle forslag :)
23. januar 2004 - 16:57
#2
Fik lavet en :)
Takker
char* removeTags(char* line)
{
unsigned int i,j=0;
char cleanLine[255];
printf("nu\n");
for(i=0;i<=strlen(line);i++)
if(*(line+i)!='<' && *(line+i)!='>' && *(line+i)!='/')
cleanLine[j++]=*(line+i);
return cleanLine;
}
23. januar 2004 - 19:49
#5
oki...mit problem er at jeg gerne vil konkatenere en streng...Jeg har gjort det mange gange før...Og gør¨på præcis samme måde nu..Men den kommer med runtime fejl hele tiden...
Måske du kan se hvad der er galt?
Her er noget kode :
int decideAction(char* line)
{
if(strchr(line,'<')!=NULL && strchr(line,'>')!=NULL && strchr(line,'/')==NULL)//Line indeholde < & > og !backslash
return 1;//folder start
else if(strchr(line,'<')!=NULL && strchr(line,'>')!=NULL && strchr(line,'/')!=NULL)//Line indeholde < & > & backslash
return 2;//folder slut
else if(strchr(line,'<')==NULL && strchr(line,'>')==NULL && strchr(line,'/')==NULL)//Line indeholde !< & !> & !backslash
return 3;//filnavn
else
return 0;
}
char* removeTags(char* line)
{
unsigned int i,j=0;
char cleanLine[255];
for(i=0;i<=strlen(line);i++)
if(*(line+i)!='<' && *(line+i)!='>' && *(line+i)!='/')
cleanLine[j++]=*(line+i);
return cleanLine;
}
void sorterXML()
{
char* tok;
char* sti={0};
char* tempfolder={0};
char fil[]={0};
int ctr=0;
int action=99;
FILE* fp;
fp=fopen("comp.txt","w");
tok = strtok (str3,"\n");
while (tok != NULL)
{
action = decideAction(tok);
tempfolder=removeTags(tok);
sti=strcat(sti,tempfolder);
/*
if(action==1)
{
sti=strcat(sti,"\\");
}
if(action==2)
sti[(strlen(sti)-(strlen(removeTags(tok))+1))]='\0';
if(action==3)
*/ printf("action : %i -- Fil : %s\n",action ,tempfolder);
tok = strtok (NULL, "\n");
}
fclose(fp);
}