Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπερα παιδια!!Παω να τρεξω ενα απλο προγραμμα σε C και μου χτυπαει το avast.Μου λεει οτι απεκλεισε μια απειλη,κατι τετοιο.Η εντολη που τρεχω στο cmd ειναι gcc -o "ονομα που επιθυμω για το εκτελεσιμο αρχειο" κωδικας.c".Χρησιμοποιω το MinGW.Καμια βοηθεια?

Δημοσ.

Καλησπερα παιδια!!Παω να τρεξω ενα απλο προγραμμα σε C και μου χτυπαει το avast.Μου λεει οτι απεκλεισε μια απειλη,κατι τετοιο.Η εντολη που τρεχω στο cmd ειναι gcc -o "ονομα που επιθυμω για το εκτελεσιμο αρχειο" κωδικας.c".Χρησιμοποιω το MinGW.Καμια βοηθεια?

 

Βάλε το πρόγραμμα που έφτιαξες στη white list του avast.

 

Δες το βιντεάκι πως μπορείς να το κάνεις.

 

http://www.avast.com/el-gr/faq.php?article=AVKB107#articleContent

Δημοσ.

Καλησπερα παιδια!!Παω να τρεξω ενα απλο προγραμμα σε C και μου χτυπαει το avast.Μου λεει οτι απεκλεισε μια απειλη,κατι τετοιο.Η εντολη που τρεχω στο cmd ειναι gcc -o "ονομα που επιθυμω για το εκτελεσιμο αρχειο" κωδικας.c".Χρησιμοποιω το MinGW.Καμια βοηθεια?

 

Σε παρακαλώ βάλ'το εδώ και δείξ'το μας!

Δημοσ.

Βάλε το πρόγραμμα που έφτιαξες στη white list του avast.

 

Δες το βιντεάκι πως μπορείς να το κάνεις.

 

http://www.avast.com/el-gr/faq.php?article=AVKB107#articleContent

Ενταξει απο το cmd τα τρεχει,απλα αν παω στο φακελο στον C;\ που εχω το αρχειο κωδικα .c και το εκτελεσιμο αρχειο .exe και παω να τρεξω το .exe μου το εμφανιζει για κλασματα του δευτερολεπτου και κλεινει χωρις να προλαβω να δω τιποτα.Μηπως ξερεις τι φταιει?

Δημοσ.

Ενταξει απο το cmd τα τρεχει,απλα αν παω στο φακελο στον C;\ που εχω το αρχειο κωδικα .c και το εκτελεσιμο αρχειο .exe και παω να τρεξω το .exe μου το εμφανιζει για κλασματα του δευτερολεπτου και κλεινει χωρις να προλαβω να δω τιποτα.Μηπως ξερεις τι φταιει?

 

Βάλε στο τέλος, πριν το return από την main αυτές τις εντολές:

puts("Press any key to exit");
getchar();
Δημοσ.

 

Βάλε στο τέλος, πριν το return από την main αυτές τις εντολές:

puts("Press any key to exit");
getchar()

Δυστυχως μου το κανει παλι εδω ειναι ο κωδικας:

 

#include <stdio.h>
 
 
int main()
{
  char ch;
  int i;
  float fn;
  printf("Give a character:");
  scanf("%c", &ch);
  printf("Give an integer:");
  scanf("%d", &i);
  printf("Give a float:");
  scanf("%f", &fn);
  printf("Character:%c  ASCII Code:%d\n", ch, ch);
  printf("Integer:%d Octal:%o Hexadecimal:%x\n", i, i, i);
  printf("Integer:%d  Integer:%6d\n", i, i);
  printf("Float:%f Float:%6.2f\n", fn, fn);
  printf("Expressions:%e  6.2e\n", fn, fn);
 
 
puts ("Press any key to exit");
getchar();
return 0;
}
 
Καμια ιδεα?
Δημοσ.

 

Δυστυχως μου το κανει παλι εδω ειναι ο κωδικας:

 

....
 
Καμια ιδεα?

 

Το πρόβλημα οφείλεται στο γεγονός ότι έχει μείνει κάποιο \n από πιο πάνω και διαβάζεται από την getchar τρώγοντας έτσι την κλήση της. Αν έβαζες άλλη μία getchar ακριβώς από κάτω, τότε το πρόβλημά σου θα δορθωθεί. Τι θα γίνει όμως αν ξέμενεναν περισσότεροι χαρακτήρες από πάνω; Θα έβαζες ένα σωρό από getchar μέχρι να σιγουρευτείς ότι δεν έχεις πρόβλημα;

 

Επίσης έχεις πρόβλημα σε αυτή την γραμμή:

printf("Expressions:%e  6.2e\n", fn, fn); // Δε χρειάζεται πουθενά το τελευταίο όρισμα.
Δημοσ.

Φτιάξε μια μικρή, δικιά σου συνάρτηση...

void press_enter( void )
{
    int c = '\0';
    printf( "%s", "Press ENTER..." );
    fflush( stdout );
    while ( EOF != (c=getchar()) && '\n' != c ) {
        ; /* void */
    }
}

  • Like 1
Δημοσ.

Φτιάξε μια μικρή, δικιά σου συνάρτηση...

void press_enter( void )
{
    int c = '\0';
    printf( "%s", "Press ENTER..." );
    fflush( stdout );
    while ( EOF != (c=getchar()) && '\n' != c ) {
        ; /* void */
    }
}

 

Η αλήθεια είναι ότι ήξερα ότι θα πόσταρες. :D

  • Like 2
Δημοσ.

Η αλήθεια είναι ότι ήξερα ότι θα πόσταρες. :D

Νομίζω όμως πως δεν αρκεί ούτε αυτό. Μάλλον πρέπει να φτιάξει και μια μικρή flush_stdin(). Ή το καλύτερο από όλα να αντικαταστήσει τις scanf() με fgets(...); sscanf(...); χρησιμοποιώντας ένα μεγάλο string.

 

ΥΓ1. Μπορεί επίσης νομίζω να βάλει ένα κενό στο τέλος του format-string στην scanf() με την οποία διαβάζει τον ch, αλλά υπό συνθήκες πάλι θα έχει νομίζω το ίδιο πρόβλημα.

 

ΥΓ2. Το καλύτερο από όλα για interactive input είναι να φτιάξει δικιά του fgets() που να κάνει flush και την stdin

Δημοσ.

Ενταξει παιδια,το ελυσα,ηθελε την εντολη system("pause"); πριν το return 0;.Σας ευχαριστω ολους παντως!!

Αυτή δουλεύει μονάχα σε Windows.

Δημοσ.

Ενταξει παιδια,το ελυσα,ηθελε την εντολη system("pause"); πριν το return 0;.Σας ευχαριστω ολους παντως!!

 

Ό,τι είπε ο migf1. Αυτό δε μπορεί να θεωρηθεί λύση σε πρόγραμμα C.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...