Ciao,
sto cercando di risolvere il problema parser HTML ma, nonostante l’output corretto ottenuto eseguendo il codice in locale, totalizzo 0 sul correttore.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char s[1000000];
int n;
void elimina(int da)
{
int i;
for(i=da; i<n-5; i++)
s[i]=s[i+4];
n=n-5;
}
void check()
{
int i;
for(i=0; i<n-4; i++)
{
if(s[i]=='&'&&s[i+1]=='a'&&s[i+2]=='m'&&s[i+3]=='p'&&s[i+4]==';')
{
elimina(i+1);
check();
return;
}
}
}
void leggi(char* stringa)
{
int i;
for(i=0; i<n-1; i++)
{
scanf("%c", &stringa[i]);
}
stringa[n]='\0';
}
main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
scanf("%d", &n);
getchar();
leggi(s);
check();
s[n]='\0';
printf("%s", s);
}
lucach
28 Marzo 2018, 12:20pm
2
Manca in output la lunghezza della nuova stringa dopo l’elaborazione
1 Mi Piace
Anche dopo aver aggiunto la stampa non funziona (in locale mi sembra che funzioni correttamente…)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char s[1000000];
int n;
void elimina(int da)
{
int i;
for(i=da; i<n-5; i++)
s[i]=s[i+4];
n=n-4;
}
void check()
{
int i;
for(i=0; i<n-4; i++)
{
if(s[i]=='&'&&s[i+1]=='a'&&s[i+2]=='m'&&s[i+3]=='p'&&s[i+4]==';')
{
elimina(i+1);
check();
return;
}
}
}
void leggi(char* stringa)
{
int i;
for(i=0; i<n-1; i++)
{
scanf("%c", &stringa[i]);
}
stringa[n]='\0';
}
main()
{
freopen("output.txt", "w", stdout);
freopen("input.txt", "r", stdin);
scanf("%d", &n);
getchar();
leggi(s);
check();
s[n-1]='\0';
printf("%d\n", n);
int i;
for(i=0; i<n; i++)
printf("%c", s[i]);
}
lucach
31 Marzo 2018, 8:16am
4
Manca il terminatore di riga alla fine del file di output:
• Il file termina (come sempre) con un carattere “a capo”, che è però compreso negli N caratteri
totali.
4 Mi Piace
marco.rocchi:
s[n-1]=‘\0’;
Il carattere " a capo " è questo → \n
s[n-1]=‘\n’;
^-^
Con questa soluzione realizzi 70 / 100