Bonjour,
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
void lecture_ligne(int nb)
{
char chaine[160];
float u,v,ff;
int n,dd;
fgets(chaine,160,fp1);
if (!(feof(fp1)))
{
fprintf(fp2,"%s;",strtok(chaine,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
for (n=1;n<=nb;n++)
{
u=atof(strtok(NULL,";"));
v=atof(strtok(NULL,";"));
vent_uv_ddff(u,v,&dd,&ff);
Bonjour,
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
void lecture_ligne(int nb)
{
char chaine[160];
float u,v,ff;
int n,dd;
fgets(chaine,160,fp1);
if (!(feof(fp1)))
{
fprintf(fp2,"%s;",strtok(chaine,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
for (n=1;n<=nb;n++)
{
u=atof(strtok(NULL,";"));
v=atof(strtok(NULL,";"));
vent_uv_ddff(u,v,&dd,&ff);
Bonjour,
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
void lecture_ligne(int nb)
{
char chaine[160];
float u,v,ff;
int n,dd;
fgets(chaine,160,fp1);
if (!(feof(fp1)))
{
fprintf(fp2,"%s;",strtok(chaine,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
for (n=1;n<=nb;n++)
{
u=atof(strtok(NULL,";"));
v=atof(strtok(NULL,";"));
vent_uv_ddff(u,v,&dd,&ff);
Bonjour,
Au boulot, je dois porter tout un tas de programme en C de sun à Linux.
Bien
sûr ce n'est pas moi qui ait écrit ces programmes et je ne connais pas le
c.
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
_________________________________________________
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
Merci d'avance pour votre aide.
Elodie
PS : un des codes :
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*#include <fp.h>*/
#include "../include/herve.h"
#define FICHIER 0
#define UV 1
FILE *fp1,*fp2;
void lecture_ligne(int);
main(argc,argv)
int argc;
char *argv[];
_________________________________________________
{
char entree[80],sortie[80];
float u,v,ff;
int rep,dd,nb,type;
if (argc==3)
{
if (strlen(argv[1])<=5)
{
type=UV;
u=atof(argv[1]);
v=atof(argv[2]);
}
else
{
type=FICHIER;
strcpy(entree,argv[1]);
_________________________________________________
nb=atoi(argv[2]);
_________________________________________________
}
}
else
{
printf("Conversion des coordonnees (u,v) d'un vent en (dd,ff)n");
printf("-----------------------------------------------------n");
printf("1 => Saisie d'un couple (u,v)n");
printf("2 => Traitement sur un fichier de donnees ?n");
scanf("%d",&rep);
if (rep!=1 && rep!=2) exit(-1);
_________________________________________________
if (rep==1)
{
type=UV;
printf("Coordonnee u ? ");
scanf("%f",&u);
printf("Coordonnee v ? ");
scanf("%f",&v);
}
else
{
type=FICHIER;
printf("Nom du fichier a traiter ? ");
scanf("%s",&entree);
printf("Nombre de couples (u,v) par enregistrement ? ");
scanf("%d",&nb);
}
}
if (type==UV)
{
vent_uv_ddff(u,v,&dd,&ff);
printf("dd=%d ff=%.1fn",dd,ff);
}
else
{
fp1=fopen(entree,"r");
if (fp1==NULL)
{
printf("%s n'existe pas!n",entree);
exit(0);
_________________________________________________
}
sprintf(sortie,"%s.res",entree);
_________________________________________________
fp2=fopen(sortie,"w");
_________________________________________________
while (!(feof(fp1))) lecture_ligne(nb);
_________________________________________________
fclose(fp1);
fclose(fp2);
}
}
void lecture_ligne(int nb)
{
char chaine[160];
float u,v,ff;
int n,dd;
fgets(chaine,160,fp1);
_________________________________________________
if (!(feof(fp1)))
{
fprintf(fp2,"%s;",strtok(chaine,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
for (n=1;n<=nb;n++)
{
u=atof(strtok(NULL,";"));
v=atof(strtok(NULL,";"));
_________________________________________________
vent_uv_ddff(u,v,&dd,&ff);
fprintf(fp2,"%d;%.2f;",dd,ff);
}
fprintf(fp2,"n");
}
}
Bonjour,
Au boulot, je dois porter tout un tas de programme en C de sun à Linux.
Bien
sûr ce n'est pas moi qui ait écrit ces programmes et je ne connais pas le
c.
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
_________________________________________________
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
Merci d'avance pour votre aide.
Elodie
PS : un des codes :
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*#include <fp.h>*/
#include "../include/herve.h"
#define FICHIER 0
#define UV 1
FILE *fp1,*fp2;
void lecture_ligne(int);
main(argc,argv)
int argc;
char *argv[];
_________________________________________________
{
char entree[80],sortie[80];
float u,v,ff;
int rep,dd,nb,type;
if (argc==3)
{
if (strlen(argv[1])<=5)
{
type=UV;
u=atof(argv[1]);
v=atof(argv[2]);
}
else
{
type=FICHIER;
strcpy(entree,argv[1]);
_________________________________________________
nb=atoi(argv[2]);
_________________________________________________
}
}
else
{
printf("Conversion des coordonnees (u,v) d'un vent en (dd,ff)n");
printf("-----------------------------------------------------n");
printf("1 => Saisie d'un couple (u,v)n");
printf("2 => Traitement sur un fichier de donnees ?n");
scanf("%d",&rep);
if (rep!=1 && rep!=2) exit(-1);
_________________________________________________
if (rep==1)
{
type=UV;
printf("Coordonnee u ? ");
scanf("%f",&u);
printf("Coordonnee v ? ");
scanf("%f",&v);
}
else
{
type=FICHIER;
printf("Nom du fichier a traiter ? ");
scanf("%s",&entree);
printf("Nombre de couples (u,v) par enregistrement ? ");
scanf("%d",&nb);
}
}
if (type==UV)
{
vent_uv_ddff(u,v,&dd,&ff);
printf("dd=%d ff=%.1fn",dd,ff);
}
else
{
fp1=fopen(entree,"r");
if (fp1==NULL)
{
printf("%s n'existe pas!n",entree);
exit(0);
_________________________________________________
}
sprintf(sortie,"%s.res",entree);
_________________________________________________
fp2=fopen(sortie,"w");
_________________________________________________
while (!(feof(fp1))) lecture_ligne(nb);
_________________________________________________
fclose(fp1);
fclose(fp2);
}
}
void lecture_ligne(int nb)
{
char chaine[160];
float u,v,ff;
int n,dd;
fgets(chaine,160,fp1);
_________________________________________________
if (!(feof(fp1)))
{
fprintf(fp2,"%s;",strtok(chaine,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
for (n=1;n<=nb;n++)
{
u=atof(strtok(NULL,";"));
v=atof(strtok(NULL,";"));
_________________________________________________
vent_uv_ddff(u,v,&dd,&ff);
fprintf(fp2,"%d;%.2f;",dd,ff);
}
fprintf(fp2,"n");
}
}
Bonjour,
Au boulot, je dois porter tout un tas de programme en C de sun à Linux.
Bien
sûr ce n'est pas moi qui ait écrit ces programmes et je ne connais pas le
c.
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
_________________________________________________
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
Merci d'avance pour votre aide.
Elodie
PS : un des codes :
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*#include <fp.h>*/
#include "../include/herve.h"
#define FICHIER 0
#define UV 1
FILE *fp1,*fp2;
void lecture_ligne(int);
main(argc,argv)
int argc;
char *argv[];
_________________________________________________
{
char entree[80],sortie[80];
float u,v,ff;
int rep,dd,nb,type;
if (argc==3)
{
if (strlen(argv[1])<=5)
{
type=UV;
u=atof(argv[1]);
v=atof(argv[2]);
}
else
{
type=FICHIER;
strcpy(entree,argv[1]);
_________________________________________________
nb=atoi(argv[2]);
_________________________________________________
}
}
else
{
printf("Conversion des coordonnees (u,v) d'un vent en (dd,ff)n");
printf("-----------------------------------------------------n");
printf("1 => Saisie d'un couple (u,v)n");
printf("2 => Traitement sur un fichier de donnees ?n");
scanf("%d",&rep);
if (rep!=1 && rep!=2) exit(-1);
_________________________________________________
if (rep==1)
{
type=UV;
printf("Coordonnee u ? ");
scanf("%f",&u);
printf("Coordonnee v ? ");
scanf("%f",&v);
}
else
{
type=FICHIER;
printf("Nom du fichier a traiter ? ");
scanf("%s",&entree);
printf("Nombre de couples (u,v) par enregistrement ? ");
scanf("%d",&nb);
}
}
if (type==UV)
{
vent_uv_ddff(u,v,&dd,&ff);
printf("dd=%d ff=%.1fn",dd,ff);
}
else
{
fp1=fopen(entree,"r");
if (fp1==NULL)
{
printf("%s n'existe pas!n",entree);
exit(0);
_________________________________________________
}
sprintf(sortie,"%s.res",entree);
_________________________________________________
fp2=fopen(sortie,"w");
_________________________________________________
while (!(feof(fp1))) lecture_ligne(nb);
_________________________________________________
fclose(fp1);
fclose(fp2);
}
}
void lecture_ligne(int nb)
{
char chaine[160];
float u,v,ff;
int n,dd;
fgets(chaine,160,fp1);
_________________________________________________
if (!(feof(fp1)))
{
fprintf(fp2,"%s;",strtok(chaine,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
for (n=1;n<=nb;n++)
{
u=atof(strtok(NULL,";"));
v=atof(strtok(NULL,";"));
_________________________________________________
vent_uv_ddff(u,v,&dd,&ff);
fprintf(fp2,"%d;%.2f;",dd,ff);
}
fprintf(fp2,"n");
}
}
Bonjour,
Au boulot, je dois porter tout un tas de programme en C de sun à Linux. Bien
sûr ce n'est pas moi qui ait écrit ces programmes et je ne connais pas le c.
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
Merci d'avance pour votre aide.
Elodie
Bonjour,
Au boulot, je dois porter tout un tas de programme en C de sun à Linux. Bien
sûr ce n'est pas moi qui ait écrit ces programmes et je ne connais pas le c.
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
Merci d'avance pour votre aide.
Elodie
Bonjour,
Au boulot, je dois porter tout un tas de programme en C de sun à Linux. Bien
sûr ce n'est pas moi qui ait écrit ces programmes et je ne connais pas le c.
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
Merci d'avance pour votre aide.
Elodie
"Elodie" a écrit dans le message de
news:c8d5po$tvt$
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*#include <fp.h>*/
#include "../include/herve.h"
#define FICHIER 0
#define UV 1
FILE *fp1,*fp2;
_________________________________________________
Ce n'est pas joli les variables globales, mieux vaut que définisse
clairement où seront utilisés fp1 et fp2 et que tu passes des pointeurs
aux
fontions qui s'en serviront.
while (!(feof(fp1))) lecture_ligne(nb);
_________________________________________________
AMA, problème de conception, ce n'est pas judicieux de tester la fin d'un
fichier en condition de while pour réaliser une lecture ligne par ligne
dans
une fonction. La lecture du fichier doit se faire en un seul tenant.
Le mieux serait ici de passer f1 et f2 à une fonction qui lise f1 pour
écrire dans f2.
Du genre :
void TraitementVentFicVersFic(FILE * f_src, FILE * f_dst);
TraitementVentFicVersFic(f1, f2); /* enlever */
void TraitementVentFicVersFic(FILE * f_src, FILE * f_dst){
char chaine[160];
float u,v,ff;
int n,dd;
fgets(chaine,160,fp1);
_________________________________________________
Tu peux ici utiliser directement le retour de fgets en lieu et place de
feof() et realiser le traitement ligne par ligne avec le while ici :
(dans le même temps, tu peux mettre f1 et f2 dans le main au lieu de les
laisser en globales)
while (fgets(chaine,160,fp1) != NULL)
{
/* saute les lignes vides*/
if (chaine[0] == n) continue;
"Elodie" <elodie@esub2.com> a écrit dans le message de
news:c8d5po$tvt$1@sxcom1.cnrm.meteo.fr...
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*#include <fp.h>*/
#include "../include/herve.h"
#define FICHIER 0
#define UV 1
FILE *fp1,*fp2;
_________________________________________________
Ce n'est pas joli les variables globales, mieux vaut que définisse
clairement où seront utilisés fp1 et fp2 et que tu passes des pointeurs
aux
fontions qui s'en serviront.
while (!(feof(fp1))) lecture_ligne(nb);
_________________________________________________
AMA, problème de conception, ce n'est pas judicieux de tester la fin d'un
fichier en condition de while pour réaliser une lecture ligne par ligne
dans
une fonction. La lecture du fichier doit se faire en un seul tenant.
Le mieux serait ici de passer f1 et f2 à une fonction qui lise f1 pour
écrire dans f2.
Du genre :
void TraitementVentFicVersFic(FILE * f_src, FILE * f_dst);
TraitementVentFicVersFic(f1, f2); /* enlever */
void TraitementVentFicVersFic(FILE * f_src, FILE * f_dst)
{
char chaine[160];
float u,v,ff;
int n,dd;
fgets(chaine,160,fp1);
_________________________________________________
Tu peux ici utiliser directement le retour de fgets en lieu et place de
feof() et realiser le traitement ligne par ligne avec le while ici :
(dans le même temps, tu peux mettre f1 et f2 dans le main au lieu de les
laisser en globales)
while (fgets(chaine,160,fp1) != NULL)
{
/* saute les lignes vides*/
if (chaine[0] == n) continue;
"Elodie" a écrit dans le message de
news:c8d5po$tvt$
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*#include <fp.h>*/
#include "../include/herve.h"
#define FICHIER 0
#define UV 1
FILE *fp1,*fp2;
_________________________________________________
Ce n'est pas joli les variables globales, mieux vaut que définisse
clairement où seront utilisés fp1 et fp2 et que tu passes des pointeurs
aux
fontions qui s'en serviront.
while (!(feof(fp1))) lecture_ligne(nb);
_________________________________________________
AMA, problème de conception, ce n'est pas judicieux de tester la fin d'un
fichier en condition de while pour réaliser une lecture ligne par ligne
dans
une fonction. La lecture du fichier doit se faire en un seul tenant.
Le mieux serait ici de passer f1 et f2 à une fonction qui lise f1 pour
écrire dans f2.
Du genre :
void TraitementVentFicVersFic(FILE * f_src, FILE * f_dst);
TraitementVentFicVersFic(f1, f2); /* enlever */
void TraitementVentFicVersFic(FILE * f_src, FILE * f_dst){
char chaine[160];
float u,v,ff;
int n,dd;
fgets(chaine,160,fp1);
_________________________________________________
Tu peux ici utiliser directement le retour de fgets en lieu et place de
feof() et realiser le traitement ligne par ligne avec le while ici :
(dans le même temps, tu peux mettre f1 et f2 dans le main au lieu de les
laisser en globales)
while (fgets(chaine,160,fp1) != NULL)
{
/* saute les lignes vides*/
if (chaine[0] == n) continue;
Elodie wrote:Bonjour,
Au boulot, je dois porter tout un tas de programme en C de sun à Linux.
Bien
sûr ce n'est pas moi qui ait écrit ces programmes et je ne connais pas
le c.
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
Merci d'avance pour votre aide.
Marrant, on dirait un stagiaire...Elodie
et qui prend l'identité d'une fille pour que les mâles se montrent
galants en plus !!!!!
oliv
Elodie wrote:
Bonjour,
Au boulot, je dois porter tout un tas de programme en C de sun à Linux.
Bien
sûr ce n'est pas moi qui ait écrit ces programmes et je ne connais pas
le c.
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
Merci d'avance pour votre aide.
Marrant, on dirait un stagiaire...
Elodie
et qui prend l'identité d'une fille pour que les mâles se montrent
galants en plus !!!!!
oliv
Elodie wrote:Bonjour,
Au boulot, je dois porter tout un tas de programme en C de sun à Linux.
Bien
sûr ce n'est pas moi qui ait écrit ces programmes et je ne connais pas
le c.
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
Merci d'avance pour votre aide.
Marrant, on dirait un stagiaire...Elodie
et qui prend l'identité d'une fille pour que les mâles se montrent
galants en plus !!!!!
oliv
sprintf(sortie,"%s.res",entree);
Et boum ! sortie a de quoi contenir 80 char, mais ce n'est à priori pas une
chaine, si il n'y a pas de ' ' (caractère de fin de chaine)quelquepart
dedans.
La solution, remplir sortie de zéros (ce qu'est ' ') avec memset par
exemple:
memset(sortie, 0, sizeof sortie);
sprintf(sortie,"%s.res", entree);
sprintf(sortie,"%s.res",entree);
Et boum ! sortie a de quoi contenir 80 char, mais ce n'est à priori pas une
chaine, si il n'y a pas de ' ' (caractère de fin de chaine)quelquepart
dedans.
La solution, remplir sortie de zéros (ce qu'est ' ') avec memset par
exemple:
memset(sortie, 0, sizeof sortie);
sprintf(sortie,"%s.res", entree);
sprintf(sortie,"%s.res",entree);
Et boum ! sortie a de quoi contenir 80 char, mais ce n'est à priori pas une
chaine, si il n'y a pas de ' ' (caractère de fin de chaine)quelquepart
dedans.
La solution, remplir sortie de zéros (ce qu'est ' ') avec memset par
exemple:
memset(sortie, 0, sizeof sortie);
sprintf(sortie,"%s.res", entree);
main(argc,argv)
int argc;
char *argv[];
{
char entree[80],sortie[80];
float u,v,ff;
int rep,dd,nb,type;
<....>
else
{
type=FICHIER;
printf("Nom du fichier a traiter ? ");
scanf("%s",&entree);
main(argc,argv)
int argc;
char *argv[];
{
char entree[80],sortie[80];
float u,v,ff;
int rep,dd,nb,type;
<....>
else
{
type=FICHIER;
printf("Nom du fichier a traiter ? ");
scanf("%s",&entree);
main(argc,argv)
int argc;
char *argv[];
{
char entree[80],sortie[80];
float u,v,ff;
int rep,dd,nb,type;
<....>
else
{
type=FICHIER;
printf("Nom du fichier a traiter ? ");
scanf("%s",&entree);
Bonjour,
Au boulot, je dois porter tout un tas de programme en C de sun à Linux.
Bien
sûr ce n'est pas moi qui ait écrit ces programmes et je ne connais pas le
c.
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
Merci d'avance pour votre aide.
Elodie
PS : un des codes :
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*#include <fp.h>*/
#include "../include/herve.h"
#define FICHIER 0
#define UV 1
FILE *fp1,*fp2;
void lecture_ligne(int);
main(argc,argv)
int argc;
char *argv[];
{
char entree[80],sortie[80];
float u,v,ff;
int rep,dd,nb,type;
if (argc==3)
{
if (strlen(argv[1])<=5)
{
type=UV;
u=atof(argv[1]);
v=atof(argv[2]);
}
else
{
type=FICHIER;
strcpy(entree,argv[1]);
nb=atoi(argv[2]);
}
}
else
{
printf("Conversion des coordonnees (u,v) d'un vent en (dd,ff)n");
printf("-----------------------------------------------------n");
printf("1 => Saisie d'un couple (u,v)n");
printf("2 => Traitement sur un fichier de donnees ?n");
scanf("%d",&rep);
if (rep!=1 && rep!=2) exit(-1);
if (rep==1)
{
type=UV;
printf("Coordonnee u ? ");
scanf("%f",&u);
printf("Coordonnee v ? ");
scanf("%f",&v);
}
else
{
type=FICHIER;
printf("Nom du fichier a traiter ? ");
scanf("%s",&entree);
printf("Nombre de couples (u,v) par enregistrement ? ");
scanf("%d",&nb);
}
}
if (type==UV)
{
vent_uv_ddff(u,v,&dd,&ff);
printf("dd=%d ff=%.1fn",dd,ff);
}
else
{
fp1=fopen(entree,"r");
if (fp1==NULL)
{
printf("%s n'existe pas!n",entree);
exit(0);
}
sprintf(sortie,"%s.res",entree);
fp2=fopen(sortie,"w");
while (!(feof(fp1))) lecture_ligne(nb);
fclose(fp1);
fclose(fp2);
}
}
void lecture_ligne(int nb)
{
char chaine[160];
float u,v,ff;
int n,dd;
fgets(chaine,160,fp1);
if (!(feof(fp1)))
{
fprintf(fp2,"%s;",strtok(chaine,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
for (n=1;n<=nb;n++)
{
u=atof(strtok(NULL,";"));
v=atof(strtok(NULL,";"));
vent_uv_ddff(u,v,&dd,&ff);
fprintf(fp2,"%d;%.2f;",dd,ff);
}
fprintf(fp2,"n");
}
}
Bonjour,
Au boulot, je dois porter tout un tas de programme en C de sun à Linux.
Bien
sûr ce n'est pas moi qui ait écrit ces programmes et je ne connais pas le
c.
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
Merci d'avance pour votre aide.
Elodie
PS : un des codes :
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*#include <fp.h>*/
#include "../include/herve.h"
#define FICHIER 0
#define UV 1
FILE *fp1,*fp2;
void lecture_ligne(int);
main(argc,argv)
int argc;
char *argv[];
{
char entree[80],sortie[80];
float u,v,ff;
int rep,dd,nb,type;
if (argc==3)
{
if (strlen(argv[1])<=5)
{
type=UV;
u=atof(argv[1]);
v=atof(argv[2]);
}
else
{
type=FICHIER;
strcpy(entree,argv[1]);
nb=atoi(argv[2]);
}
}
else
{
printf("Conversion des coordonnees (u,v) d'un vent en (dd,ff)n");
printf("-----------------------------------------------------n");
printf("1 => Saisie d'un couple (u,v)n");
printf("2 => Traitement sur un fichier de donnees ?n");
scanf("%d",&rep);
if (rep!=1 && rep!=2) exit(-1);
if (rep==1)
{
type=UV;
printf("Coordonnee u ? ");
scanf("%f",&u);
printf("Coordonnee v ? ");
scanf("%f",&v);
}
else
{
type=FICHIER;
printf("Nom du fichier a traiter ? ");
scanf("%s",&entree);
printf("Nombre de couples (u,v) par enregistrement ? ");
scanf("%d",&nb);
}
}
if (type==UV)
{
vent_uv_ddff(u,v,&dd,&ff);
printf("dd=%d ff=%.1fn",dd,ff);
}
else
{
fp1=fopen(entree,"r");
if (fp1==NULL)
{
printf("%s n'existe pas!n",entree);
exit(0);
}
sprintf(sortie,"%s.res",entree);
fp2=fopen(sortie,"w");
while (!(feof(fp1))) lecture_ligne(nb);
fclose(fp1);
fclose(fp2);
}
}
void lecture_ligne(int nb)
{
char chaine[160];
float u,v,ff;
int n,dd;
fgets(chaine,160,fp1);
if (!(feof(fp1)))
{
fprintf(fp2,"%s;",strtok(chaine,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
for (n=1;n<=nb;n++)
{
u=atof(strtok(NULL,";"));
v=atof(strtok(NULL,";"));
vent_uv_ddff(u,v,&dd,&ff);
fprintf(fp2,"%d;%.2f;",dd,ff);
}
fprintf(fp2,"n");
}
}
Bonjour,
Au boulot, je dois porter tout un tas de programme en C de sun à Linux.
Bien
sûr ce n'est pas moi qui ait écrit ces programmes et je ne connais pas le
c.
Pour le moment, dans la majorité des programmes j'ai fait les modifs
suivantes :
- virer le module fp.h et compiler avec gcc -lm
- remplacer void main(int argc, char* argv[]) par
main(argc,argv)
int argc;
char *argv[];
(ne me demandez pas pkoi)
A la compilation pas de problème mais à l'exécution j'ai une erreur de
segmentation. Une idée ?
Merci d'avance pour votre aide.
Elodie
PS : un des codes :
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*#include <fp.h>*/
#include "../include/herve.h"
#define FICHIER 0
#define UV 1
FILE *fp1,*fp2;
void lecture_ligne(int);
main(argc,argv)
int argc;
char *argv[];
{
char entree[80],sortie[80];
float u,v,ff;
int rep,dd,nb,type;
if (argc==3)
{
if (strlen(argv[1])<=5)
{
type=UV;
u=atof(argv[1]);
v=atof(argv[2]);
}
else
{
type=FICHIER;
strcpy(entree,argv[1]);
nb=atoi(argv[2]);
}
}
else
{
printf("Conversion des coordonnees (u,v) d'un vent en (dd,ff)n");
printf("-----------------------------------------------------n");
printf("1 => Saisie d'un couple (u,v)n");
printf("2 => Traitement sur un fichier de donnees ?n");
scanf("%d",&rep);
if (rep!=1 && rep!=2) exit(-1);
if (rep==1)
{
type=UV;
printf("Coordonnee u ? ");
scanf("%f",&u);
printf("Coordonnee v ? ");
scanf("%f",&v);
}
else
{
type=FICHIER;
printf("Nom du fichier a traiter ? ");
scanf("%s",&entree);
printf("Nombre de couples (u,v) par enregistrement ? ");
scanf("%d",&nb);
}
}
if (type==UV)
{
vent_uv_ddff(u,v,&dd,&ff);
printf("dd=%d ff=%.1fn",dd,ff);
}
else
{
fp1=fopen(entree,"r");
if (fp1==NULL)
{
printf("%s n'existe pas!n",entree);
exit(0);
}
sprintf(sortie,"%s.res",entree);
fp2=fopen(sortie,"w");
while (!(feof(fp1))) lecture_ligne(nb);
fclose(fp1);
fclose(fp2);
}
}
void lecture_ligne(int nb)
{
char chaine[160];
float u,v,ff;
int n,dd;
fgets(chaine,160,fp1);
if (!(feof(fp1)))
{
fprintf(fp2,"%s;",strtok(chaine,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
fprintf(fp2,"%s;",strtok(NULL,";"));
for (n=1;n<=nb;n++)
{
u=atof(strtok(NULL,";"));
v=atof(strtok(NULL,";"));
vent_uv_ddff(u,v,&dd,&ff);
fprintf(fp2,"%d;%.2f;",dd,ff);
}
fprintf(fp2,"n");
}
}
Je n'ai pas trop eu le temps bosser la dessus aujourd'hui et je pars en
vacances mais je reviendrais surement à la charge à mon retour ;)
Je n'ai pas trop eu le temps bosser la dessus aujourd'hui et je pars en
vacances mais je reviendrais surement à la charge à mon retour ;)
Je n'ai pas trop eu le temps bosser la dessus aujourd'hui et je pars en
vacances mais je reviendrais surement à la charge à mon retour ;)
Eh non même pas stagiaire mais récemment arrivée j'avoue ! Et en plus je
suis une vraie fille (incroyable non ?), et vraiment susceptible aussi !!
En tous cas, merci beaucoup à Anthony et Régis. Je n'ai pas encore eu le
temps de tout regarder mais voici ce que donne le debugger :
Program received signal SIGSEGV, Segmentation fault.
0x42031d51 in __strtod_internal () from /lib/tls/libc.so.6
Et le plantage intervient juste après la saisie du nombre de couple (u,v)
Eh non même pas stagiaire mais récemment arrivée j'avoue ! Et en plus je
suis une vraie fille (incroyable non ?), et vraiment susceptible aussi !!
En tous cas, merci beaucoup à Anthony et Régis. Je n'ai pas encore eu le
temps de tout regarder mais voici ce que donne le debugger :
Program received signal SIGSEGV, Segmentation fault.
0x42031d51 in __strtod_internal () from /lib/tls/libc.so.6
Et le plantage intervient juste après la saisie du nombre de couple (u,v)
Eh non même pas stagiaire mais récemment arrivée j'avoue ! Et en plus je
suis une vraie fille (incroyable non ?), et vraiment susceptible aussi !!
En tous cas, merci beaucoup à Anthony et Régis. Je n'ai pas encore eu le
temps de tout regarder mais voici ce que donne le debugger :
Program received signal SIGSEGV, Segmentation fault.
0x42031d51 in __strtod_internal () from /lib/tls/libc.so.6
Et le plantage intervient juste après la saisie du nombre de couple (u,v)