/*Escribe una funcion que reciba dos nombres de fichero, uno para entrada de datos y otro para salida. El
fichero de entrada tiene el formato: numero palabras palabra palabra . . . palabra, suponiendo que hay un
solo espacio entre palabras y que no hay espacios extra al final de la linea. Por ejemplo:
5 hola mundo de la gente
3 con inquietudes manifiestas
2 y alianzas
5 mas alla de la virtud
La funcion debera comprobar si el numero de palabras indicado al inicio de la linea coincide con el numero
real de palabras. Si es asi, en el fichero de salida escribiria \OK" para dicha linea y en caso contrario
\ERROR".*/
#include <stdio.h>
#include <string.h>
int fich(char *rin, char *rout){
int n=0,a=0,b=1;
char s,g,r;
FILE *in,*out;
in=fopen(rin,"r");
if(in==NULL)
return (-1);
out=fopen(rout,"w");
if(out==NULL)
return (-1);
while(fscanf(in,"%s",&g)!= EOF){
while (fscanf(in,"%s",&s) !='\0'){
if (fscanf(in,"%c",&r)==' '){
n++;}}
fscanf(in,"%d",&a);
if (n==a)
fprintf(out,"Linia %d Ok\n",b);
else
fprintf(out,"Linia %d Error\n",b);
b++;
}
fclose(in);
fclose(out);
}
int main(){
int e=0;
char rin[256],rout[265];
gets(rin);
gets(rout);
e=fich(rin,rout);
if(e==-1)
printf("las cagao\n");
return 0;
}
while(fscanf(in,"%s",&g)!= EOF)/*Escribe una funcion que reciba dos nombres de fichero, uno para entrada de datos y otro para salida. El
fichero de entrada tiene el formato: numero palabras palabra palabra . . . palabra, suponiendo que hay un
solo espacio entre palabras y que no hay espacios extra al final de la linea. Por ejemplo:
5 hola mundo de la gente
3 con inquietudes manifiestas
2 y alianzas
5 mas alla de la virtud
La funcion debera comprobar si el numero de palabras indicado al inicio de la linea coincide con el numero
real de palabras. Si es asi, en el fichero de salida escribiria \OK" para dicha linea y en caso contrario
\ERROR".*/
#include <stdio.h>
#include <string.h>
int fich(char *rin, char *rout){
int n=0,a=0,b=1;
char s[50],g,r;
FILE *in,*out;
in=fopen(rin,"r");
if(in==NULL)
return (-1);
out=fopen(rout,"w");
if(out==NULL)
return (-1);
while (getc(in)!= EOF){
while (getc(in) !='\0'){
if (getc(in)==' '){
n++;}}
fscanf(in,"%d",&a);
if (n==a)
fprintf(out,"Linia %d Ok\n",b);
else
fprintf(out,"Linia %d Error\n",b);
b++;
}
fclose(in);
fclose(out);
return 0;
}
int main(){
int e=0;
char rin[256],rout[265];
gets(rin);
gets(rout);
e=fich(rin,rout);
if(e==-1)
printf("las cagao\n");
return 0;
}
while (getc(in) !='\0'){
if (getc(in)==' '){
n++;}}\-\adEs escribió:while(fscanf(in,"%s",&g)!= EOF)
fscanf no devuelve el caracter leido, sino los bytes leidos. Otro error es lo que lees. %s indica la lectura de una cadena, pero luego pasas &g. Si lees un caracter, haz %c.
Si quieres que te devuelva el caracter, usa fgetc.
Salu2!
El_Harto escribió:Me estoy volviendo loco, xD alguien me ayuda?
El salto de linia es '\0' no?
codestation escribió:El_Harto escribió:Me estoy volviendo loco, xD alguien me ayuda?
El salto de linia es '\0' no?
No, seria '\n'
amuchamu escribió:Fin de línea es '\n'
'\0' es el carácter que indica fin de cadena.
Korso10 escribió:No, \0 es fin de cadena, salto de linea es \n
while (getc(in) !=' '){
if (getc(in)==' '){
n++;}
}while (getc(in) !='\n'){
if (getc(in)==' ')
n++;
}Linia 1 Ok
Linia 2 Error
Linia 3 Error
Linia 4 Error/*Escribe una funcion que reciba dos nombres de fichero, uno para entrada de datos y otro para salida. El
fichero de entrada tiene el formato: numero palabras palabra palabra . . . palabra, suponiendo que hay un
solo espacio entre palabras y que no hay espacios extra al final de la linea. Por ejemplo:
5 hola mundo de la gente
3 con inquietudes manifiestas
2 y alianzas
5 mas alla de la virtud
La funcion debera comprobar si el numero de palabras indicado al inicio de la linea coincide con el numero
real de palabras. Si es asi, en el fichero de salida escribiria \OK" para dicha linea y en caso contrario
\ERROR".*/
#include <stdio.h>
#include <string.h>
int fich(char *rin, char *rout){
int n=0,a=0,b=1;
FILE *in,*out;
in=fopen(rin,"r");
if(in==NULL)
return (-1);
out=fopen(rout,"w");
if(out==NULL)
return (-1);
while (getc(in)!= EOF){
n=0;
while (getc(in) !='\n'){
if (getc(in)==' ')
n++;
}
a=0;
fscanf(in,"%d",&a);
if (n==a)
fprintf(out,"Linia %d Ok\n",b);
else
fprintf(out,"Linia %d Error\n",b);
b++;
}
fclose(in);
fclose(out);
return 0;
}
int main(){
int e=0;
char rin[256],rout[265];
gets(rin);
gets(rout);
e=fich(rin,rout);
if(e==-1)
printf("las cagao\n");
return 0;
}
El_Harto escribió:No, seria '\n'
El_Harto escribió:EDIT: Manda cojones solo con este cambiowhile (getc(in) !='\n'){
if (getc(in)==' ')
n++;
}
Pokemon escribió:WTF Pero tu que haces escribiendo en EOL? xD