nasosgtech Δημοσ. 5 Δεκεμβρίου 2017 Δημοσ. 5 Δεκεμβρίου 2017 καλησπερα παιδια...εχω ενα προγραμμα το οποιο μεσω μιας συναρτησης θελω να αφαιρει τα spaces απο την προταση π του δινω...ενω η συναρτηση ειναι σωστη το προγραμμα δεν εκτελειται σωστα..μηπως μπορειτε να με βοηθησετε? #include <stdio.h> #include <string.h> void check(char [], int); int main() { int choice; char word[15]; /*Displaing on screen*/ printf("-------Menu-------\n"); printf("1) Program 1\n"); printf("2) Program 2\n"); printf("3) Program 3\n"); /*getting input*/ scanf("%d",&choice); system("CLS"); /*Finding which choice was asked for (my style of using brackets may be different than yours*/ if (choice==1) { printf("You chose program 1!\n"); printf("Enter a word to check if it is a palindrome\n"); scanf("%s", &word); check(word, 0); } else if (choice==2) { printf("You chose program 2!\n"); printf("before removal "); scanf("%s",&word); RemoveSpaces(word); } else if (choice==3) { printf("You chose program 3!\n"); } system("PAUSE"); return 0; } void check(char word[], int index) { int len = strlen(word) - (index + 1); if (word[index] == word[len]) { if (index + 1 == len || index == len) { printf("The entered word is a palindrome\n"); return; } check(word, index + 1); } else { printf("The entered word is not a palindrome\n"); } } void RemoveSpaces(char *p){ if(NULL==p) return; int i; int n=0; for( i =0;i<strlen(p);i++){ if(p!=' ') p[n++]=p; } p[n]='\0'; }
GReaperEx Δημοσ. 5 Δεκεμβρίου 2017 Δημοσ. 5 Δεκεμβρίου 2017 To scanf("%s") εισάγει μόνο μία λέξη, άρα χωρίς κενά... αν θες να πάρεις όλη τη γραμμή πρέπει να χρησιμοποιήσεις το fgets, έτσι: char line[MAX_SIZE]; ... fgets(line, MAX_SIZE, stdin); Κάνε το MAX_SIZE define με το μέγεθος που θεωρείς αρκετό. Επίσης, επειδή η scanf αφήνει το newline χωρίς να το διαβάσει, μάλλον πρέπει να κάνεις αυτό πριν καλέσεις την fgets: int c; ... while ((c = getchar()) != '\n' && c != EOF) { } Όλα μαζί: char line[MAX_SIZE]; int c; ... while ((c = getchar()) != '\n' && c != EOF) { } fgets(line, MAX_SIZE, stdin); Μετά απλά δώσε το line στο removeSpaces. Βάλε και μια puts ή printf αμέσως μετά για να δεις το αποτέλεσμα.
becoming_I Δημοσ. 5 Δεκεμβρίου 2017 Δημοσ. 5 Δεκεμβρίου 2017 Αυτό που πετάνε κατεβατά κώδικα χωρίς ένα code tag πραγματικά με ξεπερνάει. Σόρρυ για το οφτοπικ άλλα κάπου έπρεπε να το πω
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα