Ανοιγμα αρχειου αναλογα με το ορισμα που το δινω

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
james_
Δημοσιεύσεις: 23
Εγγραφή: 26 Μάιος 2009 18:11

Ανοιγμα αρχειου αναλογα με το ορισμα που το δινω

Δημοσίευση από james_ » 05 Ιουν 2009 07:10

θελω να χρησιμοποιησω την fopen για να γραψω το αρχειο. απλα θελε αναλογα με το ορισμα που θα δινω να αλλαζει και το αρχειο που γραφω. για παραδειγμα αν το αρχειο program το εκτελω με program -a programma να ονομαζεται το αρχειο programma.txt και αν program -a kwdikas να ονομαζεται kwdikas.txt.

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Ανοιγμα αρχειου αναλογα με το ορισμα που το δινω

Δημοσίευση από virxen75 » 05 Ιουν 2009 10:47

Κώδικας: Επιλογή όλων


   #include <stdio.h>
   #include <stdlib.h>
   #include <string.h>
 
   int main&#40; int argc, char *argv&#91;&#93; &#41;
   &#123;
       char *filename;
     if &#40;argc!=3&#41;&#123;
                  printf&#40;"\nWrong parameters.Correct syntax is\nprogram -a filename\n"&#41;;
                  exit&#40;0&#41;;
                  &#125;
      filename=strcat&#40;argv&#91;2&#93;,".txt"&#41;;
      printf&#40;"\nfilename=%s",filename&#41;;
        FILE * pFile;
  pFile = fopen &#40;filename,"w"&#41;;
    fclose&#40;pFile&#41;;
 
          
     
     return 0;
   &#125;

το -a δεν εξηγείς τι ακριβώς κάνει και δεν το έλαβα υπόψιν
βέβαια θέλει και κάποιους άλλους ελέγχους για να ελέγχεις ότι
ο χρήστης έβαλα σωστά τις παραμέτρους
π.χ. program -xx 1234.txt το δέχεται

james_
Δημοσιεύσεις: 23
Εγγραφή: 26 Μάιος 2009 18:11

Ανοιγμα αρχειου αναλογα με το ορισμα που το δινω

Δημοσίευση από james_ » 06 Ιουν 2009 21:46

virxen75 έγραψε:

Κώδικας: Επιλογή όλων


   #include <stdio.h>
   #include <stdlib.h>
   #include <string.h>
 
   int main&#40; int argc, char *argv&#91;&#93; &#41;
   &#123;
       char *filename;
 //char *files;
     if &#40;argc!=3&#41;&#123;
                  printf&#40;"\nWrong parameters.Correct syntax is\nprogram -a filename\n"&#41;;
                  exit&#40;0&#41;;
                  &#125;
//files=argv&#91;2&#93;;
//filename=strcat&#40;files,".txt"&#41;;      printf&#40;"\nfilename=%s",filename&#41;;
        FILE * pFile;
  pFile = fopen &#40;filename,"w"&#41;;
    fclose&#40;pFile&#41;;
 
          
     
     return 0;
   &#125;

ευχαριστω . αυτο ηθελα. αλλα εχω ενα μικρο προβλημα.  εβαλα σχολια στη παραλλαγη του προβληματος που ειχες φτιαξει. επειδη δε θελω να χανω το ορισμα του argv[2] το εβαλα στο files για να αλλαξεθ μονο το files. ομως ετσι αλλαζουν και το files kai to arv[2]. κατι πρεπει να παιζει με τους δεικτεσ

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Ανοιγμα αρχειου αναλογα με το ορισμα που το δινω

Δημοσίευση από virxen75 » 07 Ιουν 2009 02:25

το files=argv[2];

έχει σαν αποτέλεσμα να ταυτίζονται οι μεταβλητές αφού πλέον δείχνουν στην ίδια
μνήμη έτσι αλλαγή της μίας σημαίνει και ίδια αλλαγή στην άλλη


πιο κάτω σου δείχνω έναν τρόπο να το αποφύγεις
ίσως υπάρχει και καλύτερος αλλά τέτοια ώρα μόνο αυτό μου έρχεται

δες τα αποτελέσματα στην οθόνη και χρησιμοποίησε ότι θες

Κώδικας: Επιλογή όλων

   #include <stdio.h>
   #include <stdlib.h>
   #include <string.h>
 
   int main&#40; int argc, char *argv&#91;&#93; &#41;
   &#123;
       char files&#91;20&#93;;
       char filename&#91;20&#93;;
     if &#40;argc!=3&#41;&#123;
                  printf&#40;"\nWrong parameters.Correct syntax is\nprogram -a filename\n"&#41;;
                  exit&#40;0&#41;;
                  &#125;
      printf&#40;"\nargv&#91;2&#93;=%s",argv&#91;2&#93;&#41;;//parametros
      strcpy&#40;files,argv&#91;2&#93;&#41;;//antigrafi parametroy se string
      strcpy&#40;filename,argv&#91;2&#93;&#41;;//omoios
      int a =strlen&#40;filename&#41;;
      filename&#91;a&#93;='.';
      filename&#91;a+1&#93;='t';
      filename&#91;a+2&#93;='x';
      filename&#91;a+3&#93;='t';
      filename&#91;a+4&#93;='\0';//pros8eto to .txt
      printf&#40;"\nfiles=%s",files&#41;;
      printf&#40;"\nargv&#91;2&#93;=%s",argv&#91;2&#93;&#41;;
      printf&#40;"\nfilename=%s",filename&#41;;
      printf&#40;"\nfiles=%s",files&#41;;
      printf&#40;"\nargv&#91;2&#93;=%s",argv&#91;2&#93;&#41;;
      strcpy&#40;files,filename&#41;;
      printf&#40;"\nfilename=%s",filename&#41;;
      printf&#40;"\nfiles=%s",files&#41;;
      printf&#40;"\nargv&#91;2&#93;=%s",argv&#91;2&#93;&#41;;
      FILE * pFile;
  pFile = fopen &#40;filename,"w"&#41;;
  fclose&#40;pFile&#41;;
 
          
     
     return 0;
   &#125;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Ανοιγμα αρχειου αναλογα με το ορισμα που το δινω

Δημοσίευση από dva_dev » 07 Ιουν 2009 13:56

Μια παραλλαγή του κώδικα του virxen75

Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main&#40; int argc, char *argv&#91;&#93; &#41;
&#123;
    FILE *pFile;
    char filename&#91;_MAX_FNAME&#93;;

    if &#40;&#40;argc != 3&#41; ||
        &#40;strcmp&#40;argv&#91;1&#93;, "-a"&#41; != 0&#41;&#41;
    &#123;
        printf&#40;"Syntax&#58;\n%s -a <filename>\n", argv&#91;0&#93;&#41;;
        return 1;
    &#125;

    strcpy&#40;filename, argv&#91;2&#93;&#41;;
    strcat&#40;filename, ".txt"&#41;;

    pFile = fopen &#40;filename,"w"&#41;;
    //Write to file...
    fclose&#40;pFile&#41;;
    return 0;
&#125;

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης