ilość znaków w pliku - program w C

Awatar użytkownika
qaz
Użytkownik
Użytkownik
Posty: 486
Rejestracja: 28 paź 2006, o 21:56
Płeć: Kobieta
Lokalizacja: Gobbos' Kingdom
Podziękował: 311 razy
Pomógł: 5 razy

ilość znaków w pliku - program w C

Post autor: qaz »

Potrzebuje program w C, który podaje ilość danego znaku (wskazanego przez użytkownika) w danym pliku tekstowym. Jakoś o ile juz mi sie co do C zaczelo rozjasniac, to ze stringami mam problem Dziekuje z góry za pomoc
Awatar użytkownika
Emiel Regis
Użytkownik
Użytkownik
Posty: 1495
Rejestracja: 26 wrz 2005, o 17:01
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 71 razy
Pomógł: 225 razy

ilość znaków w pliku - program w C

Post autor: Emiel Regis »

qaz pisze:to ze stringami mam problem
Ależ wyznanie; )
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

ilość znaków w pliku - program w C

Post autor: smiechowiec »

Skopiowałem program sprzed kilku dni,
myślę, że się nadaje do tego zadania

Kod: Zaznacz cały

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

/* Maksymalna dlugosc linii */
#define MAXLINIA 5000

/* Wyswietleni informacji o programie */
int oprogramie() {
  static char sinfo[] =
"*** Program qaz

 sposob wywolania

 qaz plik_tekstowy szukany_znak 
";
  fputs(sinfo, stderr);
  return 0;
}


/* dodaje znaki z lini do tablicy wystapien */
int zlicznaki(char *s, int tiznakow[]) {
  int i; /* licznik petli */
  if ((s != NULL) && (strlen(s) > 0)) {
    for(i = 0; i < strlen(s); i++)
      tiznakow[ (unsigned char) s[i] ]++;
  }
  return 0;
}


int main(int argc, char *argv[]) {
  FILE *pfilein;  /* Plik z danymi wejsciowymi */
  char slinia[MAXLINIA];
  int i; /* licznik petli */
  int tiznakow[256]; /* Tablica zmiennych podliczjaca liczbe wystapien poszczegolnych znakow */

    if (argc != 3) {
    printf("podano niewlasciwa liczbe argumentow %i 
", argc - 1);
    oprogramie();
    exit(1);
  }

    if (strlen(argv[2]) != 1) {
    printf("Drugi argument powinien byc pojedynczym znakiem 
");
    oprogramie();
    exit(1);
  }
    
  if ( (pfilein = fopen(argv[1], "rt")) == NULL) {
    fprintf(stderr, "Nie udalo sie otworzyc pliku z danymi wejsciowymi %s
", argv[1]);
    exit(1);
    }
 
  /* Wyzerowanie tablicy zliczjacej znaki */
  for(i = 0; i < 256; i++)
    tiznakow[i] = 0;
 
  while (!feof(pfilein)) {
    fgets(slinia, MAXLINIA, pfilein);
    zlicznaki(slinia, tiznakow);
  }
  
  printf("Plik %s zawiera %i znakow %s.
", argv[1], tiznakow[(unsigned char) argv[2][0] ], argv[2]);

  fclose(pfilein);
  return 0;
}
Awatar użytkownika
qaz
Użytkownik
Użytkownik
Posty: 486
Rejestracja: 28 paź 2006, o 21:56
Płeć: Kobieta
Lokalizacja: Gobbos' Kingdom
Podziękował: 311 razy
Pomógł: 5 razy

ilość znaków w pliku - program w C

Post autor: qaz »

Drizzt pisze:
qaz pisze:to ze stringami mam problem
Ależ wyznanie; )
ogólnie z majtkami
///
przy kompilacji wyswietla mi: "[Warning] backslash and newline separated by space "
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

ilość znaków w pliku - program w C

Post autor: smiechowiec »

to znaczy że na końcu linii zakończonych znakiem
za znakiem nie powinno już być spacji tylko od razu przejście do nowej linii.
Usuń spacje za znakami

Kod: Zaznacz cały

 static char sinfo[] =
"*** Program qaz

 sposob wywolania

 qaz plik_tekstowy szukany_znak 
"; 
albo wpisz opis w jednej linii.
Awatar użytkownika
qaz
Użytkownik
Użytkownik
Posty: 486
Rejestracja: 28 paź 2006, o 21:56
Płeć: Kobieta
Lokalizacja: Gobbos' Kingdom
Podziękował: 311 razy
Pomógł: 5 razy

ilość znaków w pliku - program w C

Post autor: qaz »

zgadza sie Ale ...
Po włączeniu programu od razu zamyka jednak okno. Próbowałam z system("PAUSE"); ale albo w złe miejsce pcham albo to nie o to chodzi ... :/

A teraz widze, że tu jest sposób wywołania podany, ale to w konsoli linuxa bym sobie moze i poradzila, ale w Windzie to nie wiem jak wywoływać...
Wiec moze poprosze kogos, kto lubi pingwiny o kompilacje i sprawdzenie poprawnosci, a ja przyjme a priori
PS. Dziękuję wszystkim za pomoc
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

ilość znaków w pliku - program w C

Post autor: smiechowiec »

po skompilowaniu programu w windows najlepiej
uruchom w tym samym katalogu wiersz poleceń i napisz z ręki
qaz.exe gaz.c a
w odpowiedzi powinna pojawić się liczba znaków a w pliku.
ODPOWIEDZ