Witam, chciałem prosić o pomoc.
Polecenie brzmi: napisz funkcję, która przyjmie 3 parametry: tablicę znakową lan, oraz dwa wskaźniki lz i ld. Funkcja ma za zadanie zmienić wielkie litery na małe i na odwrót. Funkcja bezpośrednio nie zwraca nic, a przez wskaźnik zwraca ilość zmian z dużych na małe i na odwrót.
Następnie napisać program, który ma wczytać n, które będzie większa od 1, zarezerwować pamięć dla tablicy znaków o podanym w n rozmiarze. Podać znak po znaku zawartość tablicy, a następnie wykorzystać utworzona wyżej funkcje po czym wyświetlić tablicę po modyfikacji, zmiany na wielkie litery i zmiany na małe litery.
Aktualnie napisałem taki kod, ale mam problem z funkcją modyfikuj. Program działa, ale do momentu działania tej funkcji. Program się wysypuje przy jej działaniu
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void modyfikuj(char* lan, int* ld, int* lm)
{
int i;
*ld = 0;
*lm = 0;
for (i = 0; i < (sizeof(lan) / sizeof(char)); i++)
;
{
if ((*(lan + i) <= 'z' && *(lan + i) >= 'a')) {
*(lan + i) = toupper(*(lan + i)); //zamieniam na duze litery
*ld = *ld + 1;
}
if ((*(lan) + i <= 'Z' && *(lan) + i >= 'A')) {
*(lan + i) = tolower(*(lan + i));
*lm = *lm + 1;
}
}
}
int main()
{
int n, i, *dz = 0, *mz = 0;
char* tab;
do {
printf("podaj n\n");
scanf("%d", &n);
} while (n < 1);
tab = (char*)calloc(n, sizeof(char));
for (i = 0; i < n; i++) {
printf("podaj %d element tablicy: ", i);
scanf("%s", (tab + i));
}
for (i = 0; i < n; i++) {
printf(" %d element tablicy: %c\n", i, *(tab + i));
}
modyfikuj(*tab, dz, mz);
return 0;
}
Bardzo proszę o pomoc, i z góry dziękuję za odpowiedzi.
Ps. Przepraszam za błędy techniczne, to mój pierwszy post :P