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

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

Δημοσ.
καλησπερα παιδια...εχω ενα προγραμμα το οποιο μεσω μιας συναρτησης θελω να αφαιρει τα 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';

 

}

Δημοσ.

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 αμέσως μετά για να δεις το αποτέλεσμα.

Δημοσ.

Αυτό που πετάνε κατεβατά κώδικα χωρίς ένα code tag πραγματικά με ξεπερνάει.

 

Σόρρυ για το οφτοπικ άλλα κάπου έπρεπε να το πω :P

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

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

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

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

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

Σύνδεση

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

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