IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Compilation main et fopen_s [Débutant(e)]


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 79
    Par défaut Compilation main et fopen_s
    Bonjour,

    Je dois créér un Main à partir de plusieurs fonctions qui ont été faite pour fonctionner avec une Interface.
    La personne qui a fait cette interface ne veut pas la divulguer et donne juste les fonctions qu´elle utilise.

    J´avoue que je suis un peu perdue... je n´ai jamais programmé en C de gros programmes...

    D´après ce que je comprends, j´ai une suite de fonctions qui doivent s´exécuter les unes après les autres (je dois prendre le code sans explications de la personne... pff mais c´est comme ca qu´on travaille au Mexique, avec des gens de la même boite!! vive la concurrence )

    Je vous mets un exemple de code de ce que l´on m´a donné (on m´a normalement enlevé ce qui correspond à l´interface)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    // red drenaje 3D.cpp : define los comportamientos de las clases para la aplicación.
     
    #include "Resource.h"
    #include "stdafx.h"
    #include "estructuras.h"
     
    #include <stdio.h>
    #include <stdarg.h>
    #include <stdlib.h>
    #include <iostream>
    #include <windows.h>
    #include <math.h>
     
    #define BUFSIZE 80
     
    // rutina que libera la memoria de los arreglos globales usados en el proceso
    void libera_memoria()
    {...}
    void lee_modelo_de_elevaciones(LPCTSTR archivo){
    FILE *a_elev;
    ...}
    //et d´autres routines du même type
    Mon problème est que je ne sais pas comment créer un Main qui me permette d´utiliser ces fonctions sans l´interface qui a été créée spécialement pour appeler ces fonctions... Je pense qu´il serait possible d´utiliser une boite de commande DOS, pour pouvoir faire la meme chose que l´interface mais je ne sais pas comment...
    Je travaille sous Visual C++.

    Autre problème, si je compile ce truc, direct, il me manque une librairie car j´ai un problème avec fopen_s qu´ils ont utilisés:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    --------------------Configuration: red_drenaje_3D - Win32 Debug--------------------
    Compiling...
    red_drenaje_3D.cpp
    D:\POTENCIAL HYDROELECTRICO\TUBERIA\Tuberia codigo fuente\red_drenaje_3D.cpp(77) : error C2065: 'fopen_s' : undeclared identifier
    D:\POTENCIAL HYDROELECTRICO\TUBERIA\Tuberia codigo fuente\red_drenaje_3D.cpp(94) : error C2065: 'sscanf_s' : undeclared identifier
    D:\POTENCIAL HYDROELECTRICO\TUBERIA\Tuberia codigo fuente\red_drenaje_3D.cpp(111) : error C2065: 'sprintf_s' : undeclared identifier
    D:\POTENCIAL HYDROELECTRICO\TUBERIA\Tuberia codigo fuente\red_drenaje_3D.cpp(203) : error C2065: 'fscanf_s' : undeclared identifier
    Error executing cl.exe.
     
    red_drenaje_3D.exe - 4 error(s), 0 warning(s)
    Merci pour votre aide!!

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Déjà si tu programmes en C, y'a un truc qui va pas:
    Ca appartient au C++ ca... quand est-ce qu'on cessera de confondre ces deux langages
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 79
    Par défaut
    Ah pardon... je vais changer de place mon message.

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Lnmex
    Ah pardon... je vais changer de place mon message.
    Nan mais attends part pas Si ton programme est en C tu es sur le bon forum mais parfois des débutants mettent pour je ne sais quelle raison des header C++ également dans le code C, donc si ton programme est en C ou est censé l'être alors tu est au bon endroit
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    fopen_s() est une fonction 100% non-portable de Microsoft, ajoutée à la CRT de Visual Studio 2005.

    Utilise les fonctions standard à la place (fopen(), etc.), ce sera plus simple. Si ton compilo gueule des warnings "this function may be unsafe" sur ces fonctions, rajoute cette ligne avant les includes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define _CRT_SECURE_NO_WARNINGS
    (Si Visual 2005 te dit quand même que les fonctions sont "deprecated", c'est qu'il te manque le SP1 de Visual...)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 79
    Par défaut
    bon ben je l´ai aussi mis en C++
    Mon programme est censé être en C.

    Bon je vais commencer à changer le fopen_s par f_open.
    (Je commence tard: il est seulement 9h du matin ici)

    Pour les print y a pas de probleme.
    Mais pour fopen_s en fopen:
    c´est bon si j´enleve le premier pointeur? ou il faudra que je change "archivo"?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fopen_s( &a_nodos, archivo, "rt" )
    en 
    fopen(  archivo, "rt" )
    Merci

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 79
    Par défaut
    Ok j´ai changé tous les _s en fopen etc...
    Et c´est bon j´ai plus d´erreur.

    Mais j´ai d´autres erreurs... (et des warnings...)

    Pouvez vous me dire si elles sont liées à l´ínterface? ou ce serait encore une incompatibilité?

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    red_drenaje_3D.cpp
    D:\POTENCIAL HYDROELECTRICO\TUBERIA\Tuberia codigo fuente\red_drenaje_3D.cpp(86) : warning C4700: local variable 'a_elev' used without having been initialized
    D:\POTENCIAL HYDROELECTRICO\TUBERIA\Tuberia codigo fuente\red_drenaje_3D.cpp(139) : warning C4700: local variable 'a_dir' used without having been initialized
    D:\POTENCIAL HYDROELECTRICO\TUBERIA\Tuberia codigo fuente\red_drenaje_3D.cpp(204) : warning C4700: local variable 'a_nodos' used without having been initialized
    D:\POTENCIAL HYDROELECTRICO\TUBERIA\Tuberia codigo fuente\red_drenaje_3D.cpp(271) : warning C4700: local variable 'a_seg' used without having been initialized
    D:\POTENCIAL HYDROELECTRICO\TUBERIA\Tuberia codigo fuente\red_drenaje_3D.cpp(1123) : warning C4700: local variable 'a_tip' used without having been initialized
    D:\POTENCIAL HYDROELECTRICO\TUBERIA\Tuberia codigo fuente\red_drenaje_3D.cpp(1166) : warning C4700: local variable 'a_nodos' used without having been initialized
    D:\POTENCIAL HYDROELECTRICO\TUBERIA\Tuberia codigo fuente\red_drenaje_3D.cpp(1205) : warning C4700: local variable 'a_gen' used without having been initialized
    Linking...
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
    libcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    Debug/red_drenaje_3D.exe : fatal error LNK1120: 3 unresolved externals
    Error executing link.exe.
     
    red_drenaje_3D.exe - 4 error(s), 7 warning(s)

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    a_nodos = fopen(  archivo, "rt" )

    Sachant que le "t" est non-portable, et inutile si l'on ne s'est pas amusé à trifouiller avec les paramètres d'ouverture par défaut...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 79
    Par défaut
    Merci!

    J´avoue que je suis un peu perdue dans toutes ces questions de portabilités!

    Par contre ca n´enlève rien, j´ai toujours les même erreurs.

    Mon problème est que je voudrais pouvoir le compiler et l´utiliser comme il a été créé. Et plus tard pouvoir faire des modifications, mais en temps voulu, car je vais devoir regarder le code en détail.

Discussions similaires

  1. probleme de compilation main
    Par marbouchi dans le forum Débuter
    Réponses: 6
    Dernier message: 15/12/2008, 13h02
  2. Réponses: 10
    Dernier message: 28/06/2007, 21h42
  3. Main & fopen_s
    Par Lnmex dans le forum C++
    Réponses: 6
    Dernier message: 20/04/2007, 16h57
  4. Débutant Eclipse compilation sans main
    Par Bba_M dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 15/06/2006, 18h28
  5. Débutant Eclipse compilation sans "main"
    Par Bba_M dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 08/06/2006, 21h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo