[c] problem z pobieraniem stringa

kawafis44
Użytkownik
Użytkownik
Posty: 474
Rejestracja: 22 paź 2007, o 20:55
Płeć: Mężczyzna
Lokalizacja: Gliwice
Podziękował: 416 razy
Pomógł: 2 razy

[c] problem z pobieraniem stringa

Post autor: kawafis44 »

Chciałbym, aby użytkownik mógł wybrać nazwę pliku. W nazwie pliku nie może wystąpić znak '6', zaś znak '0' (zero) powoduje rezygnację z podjęcia decyzji.
Jak poprawić ten kod?
Pozdrawiam i dzięki z góry!

Kod: Zaznacz cały

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

FILE *fp;

void Func_e() //Save matrices to the file
{
   int i;
   char name[20];
   int are_there_illegal_characters;

      //choose the file name
      printf("\n*** Choose the file name (0 for exit) ***");
      printf("\nYour choice: ");
      do
      {
         fflush(stdin);
         scanf("%s",&name);
         are_there_illegal_characters = 0; //check whether there are any illegal characters
         for (i=0;i<20;i++)
         {
            if (name[i] == '6') are_there_illegal_characters = 1;
         }
         if (are_there_illegal_characters == 0)
            {printf("OK!");break;}
         else
            {
               if (name=='0')
                  {printf("You have not chosen the file name.");break;}
               else
                  {printf("Your choice is unproper. You cannot use number 6 in your file name.");}
            }
      } while (1==1);

      fp = fopen(name,"a");
      fclose(fp);

}

int main(int argc, char *argv[])
{
   Func_e();   
}
Chciałbym, aby użytkownik mógł wybrać nazwę pliku. W nazwie pliku nie może wystąpić znak '6', zaś znak '0' (zero) powoduje rezygnację z podjęcia decyzji.
Jak poprawić ten kod?
Pozdrawiam i dzięki z góry!
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

[c] problem z pobieraniem stringa

Post autor: kadiii »

Oczywiście nie można porównywać wskaźnika ze stałą

Kod: Zaznacz cały

if (name=='0') 
powinno być

Kod: Zaznacz cały

if(*name=='0')
Tak jeszcze parę uwag odnosnie kodu nie wpisuj bibliotek z których nie korzystasz, nie rób takich paskudnych pętli z breakiem i nie używaj zbyt długich nazw zmiennych. Pozdro
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

[c] problem z pobieraniem stringa

Post autor: smiechowiec »

Kod: Zaznacz cały

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

FILE *fp;

void Func_e() //Save matrices to the file 
{
   int i;
   char name[20];
   int are_there_illegal_characters;

      //choose the file name
      while (1) {
        printf("\n*** Choose the file name (0 for exit) ***");
        printf("\nYour choice: ");
        fflush(stdin);
        scanf("%s", &name);
        if (name[0] == '0') {
          printf("You have not chosen the file name.");
          break;
        }
        are_there_illegal_characters = 0; //check whether there are any illegal characters
        for (i=0; i < 20; i++)
          if (name[i] == '6')
            are_there_illegal_characters = 1;

        if (are_there_illegal_characters == 1) {
          printf("Your choice is unproper. You cannot use number 6 in your file name.");
          continue;
        }
          
        fp = fopen(name, "a");
        fclose(fp);
        printf("Wsjo budjet, OK! i daswidanja :)");
        break;
      };
}

int main(int argc, char *argv[])
{
   Func_e();   
}
ODPOWIEDZ