Zajęcia 7 - Znaki i łańcuchy znaków (stringi)

Przykład (program cat)

#include <stdio.h>
 
int main()
{
	int a;
 
	while((a=getchar()) != EOF) 
		putchar(a);
 
	return 0;
}

Ćwiczenia

  • zmodyfikuj powyższy program tak aby po każdej linii tekstu wyświetlał ilość znaków wczytanych w tej linii
  • wykorzystując funkcję getchar() napisz funkcję o nazwie czytajlinie, która wczyta do podanej tablicy znaków linię tekstu z klawiatury (dla uproszczenia zakładamy, że linia teksu nie zawiera więcej niż 256 znaków). Funkcja zwraca wskaźnik do tablicy zawierającej wczytany łańcuch. Deklarację funkcji zawrzyj w pliku str.h a definicję w pliku źródłowym str.c.
  • napisz funkcję dlugosc, która zwraca ilość znaków z podanego łańcucha znakowego. Deklarację i definicję dodaj do odpowiednich plików źródłowych i nagłówkowych.
  • napisz funkcję kopia, która tworzy kopię łańcucha znaków. Funkcja przyjmuje dwa argumenty: tablicę znaków do skopiowanie oraz tablicę znaków do której napis zostanie skopiowany. Funkcja zwraca wskaźnik do skopiowanego napisu.
  • napisz funkcję malenaduze, która dla podanej tablicy znaków zamieni wszystkie małe litery na duże. Funkcja zwraca wskaźnik na początek przetransformowanej tablicy.
  • napisz funkcję sklej, której argumentami są dwie tablice ze znakami. Funkcja dokleja zawartość drugiej tablicy na końcu pierwszej (zakładamy, że ta tablica jest dostatecznie duża aby pomieścić oba napisy). Wartością zwracaną jest wskaźnik do tablicy zawierającej połączone napisy.
  • napisz funkcję znajdz, której argumentami są dwa łańcuchy znaków. Funkcja zwraca wartość 1 gdy drugi z podanych łańcuchów występuje w pierwszym. W przeciwnym wypadku zwracana jest wartość 0.

Np. wywołanie

 znajdz("Ala ma kota","kot")

zwraca 1, zaś

 znajdz("Ala ma kota","koc")

zwraca 0.

#include<stdio.h>
#define MAX 1000
 
int main(int argc,char *argv[])
{
   char str[MAX];
   int i=0;
 
   while(i< argc) 
   {
        printf("argument %d ",i);
        printf(*(argv+i));
        printf("\n");    
        i++;
   }
   return 0;
}

Ćwiczenia

  • korzystając z funkcji znajdz napisz program grep.c. Argumentem programu jest wzorzec (ciąg znaków), w przypadku gdy argument nie został podany lub gdy została podana opcja –help program wyświetla krótką informację o programie. Program czyta kolejne linie tekstu i wyświetla tylko te które zawierają wzorzec.
  • napisz program, który po wczytaniu tekstu wyświetli liczbę linii, wyrazów i znaków. Jako wyrazy traktujemy ciąg znaków oddzielony przynajmniej jednym białym znakiem (spacją, tabulatorem lub znakiem nowej linii). Gdy program zostanie uruchomiony z opcją -l wyświetlana powinna być tylko liczba linii wczytanego tekstu. Z opcją -w tylko liczba wyrazów a z opcją -z tylko liczba znaków (zobacz program wc w systemie UNIX/Linux).
  • korzystając z funkcji strcmp napisz program, który dla podanego tekstu wyświetli wszystkie linie w porządku alfabetycznym.