Βοήθεια στην C

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

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

Απάντηση
gblar
Δημοσιεύσεις: 6
Εγγραφή: 16 Οκτ 2007 20:22

Βοήθεια στην C

Δημοσίευση από gblar » 16 Οκτ 2007 20:34

Έχω το γράψει το ποιο κάτω πρόγραμμα για μια εργασία μου.
Το πρόβλημα μου είναι ότι δεν μπορώ να το κάνω να ανοίγει ένα αρχείο που θα του δίνω και μετά να το κωδικοποιεί. Όσες φορές και να δοκιμάσω κάτι απέτυχα στο άνοιγμα του αρχείου αλλά με βάζει και το γράφω και μετά το κωδικοποιεί. Μπορεί κάποιος να με βοηθήσει;


#include <stdio.h>
#include <ctype.h>



/* Function to encode using k as key */

void enc (char k[])
{
int n = strlen(k);
int i = 0;
int c;

while ((c = getchar()) != EOF)
{
if (isalpha(c))
{
int codec = tolower(c) - 'a' + 1;
int codep = tolower(k[i]) - 'a' + 1;
int cnew = codec + codep;

if (cnew > 26)
cnew -= 26;

if (islower(c))
c = cnew - 1 + 'a';
else
c = cnew - 1 + 'A';

if (++i >= n)
i = 0;
}
putchar(c);
}
}


/* Function to decode using p as key: the reverse of the previous */

void dec (char k[10])
{
int n = strlen(k);
int i = 0;
int c;

while ((c = getchar()) != EOF)
{
if (isalpha(c))
{
int codec = tolower(c) - 'a' + 1;
int codep = tolower(k[i]) - 'a' + 1;
int cnew = codec - codep;

if (cnew < 0)
cnew += 26;

if (islower(c))
c = cnew - 1 + 'a';
else
c = cnew - 1 + 'A';

if (++i >= n)
i = 0;
}
putchar(c);
}
}


/* Main program */

int main (int argc, char * argv[])
{
/* Check if a key has been given */

if (argc < 2) {
printf("You forgot the key...\n");
return 1;
}

/* Choose between encoding and decoding */

if (argc > 2 && strcmp(argv[1], "-cipher") == 0)
dec(argv[2]);
else
enc(argv[1]);

return 0;
}

sibas
Honorary Member
Δημοσιεύσεις: 1850
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

Βοήθεια στην C

Δημοσίευση από sibas » 16 Οκτ 2007 21:41

Στο συγκεκριμένο δεν έχεις γράψει πουθενά να ανοίξει και να διαβάσει κάποιο αρχείο παρά μόνο την γραμμή εντολής.

[edit]Άκυρο κατάλαβα λάθος (μάλλον πρέπει να ξανά θυμηθώ την C μου)[/edit]

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

Βοήθεια στην C

Δημοσίευση από dva_dev » 17 Οκτ 2007 10:56

Κοίταξε τα εξής:

Τσεκάρισε ότι ο αριθμός, τιμές των παραμέτρων είναι ο σωστός. Αν περιμένεις 1 ή 2 παραμέτρους ότι ο χρήστης δεν δίνει 0 ή 3 ή 4 ή 100 παρά μόνο 1 ή 2.
Το πρόβλημα μου είναι ότι δεν μπορώ να το κάνω να ανοίγει ένα αρχείο που θα του δίνω...
Το αρχείο πως θα το δίνεις με redirection των standard input, standard output ή θα περνάς το/τα filenames σαν παράμετρο; Πουθενά δεν βλέπω να ανοίγεις/κλείνεις κάποιο αρχείο. αλλά χρησιμοποιείς παντού τα standard input, standard output (πληκτρολόγιο, οθόνη αντίστοιχα).

Η σύνταξη της εντολής σου ποιά θα είναι (για κωδικοποίηση και για αποκωδικοποίηση);

Τι ακριβώς θέλεις να κάνεις;

Programmer
Δημοσιεύσεις: 67
Εγγραφή: 22 Σεπ 2007 06:55

Βοήθεια στην C

Δημοσίευση από Programmer » 17 Οκτ 2007 22:41

Ναι! δεν δίνεις όνομα και διαδρομή αρχείου, ούτε υπάρχει και καμία εντολή που να το ανοίγει... Δες την συνάρτηση fopen και τροποποίησε τα ορίσματα τηες γραμμής διαταγών... Τροποποίηση χρειάζονται και οι συναρτήσεις ώστε να διαβάζουν από αρχείο... Αλλιώς κάνε ανακατεύθνση...

Απάντηση

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

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

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