Witam, mam problem z dwoma zadaniami zwiazanymi z tablicami.
1**.Działanie programu:** Na prośbę programu użytkownik podaje napis (łańcuch najwyżej 99 znaków), który
program umieszcza w tablicy znaków o rozmiarze 100. Następnie program zamienia
wszystkie małe litery na duże i w następnej linii wyświetla ten zmieniony napis.
Wymagania: Zamiana małych liter na duże ma się odbywać w funkcji m_strupr(tab), otrzymującej
jako parametr adres pierwszej komórki tablicy (adres tablicy); ten sam adres ma być
zwracany.
Moje rozwiazanie:
#include <iostream>
#include <string.h>
using namespace std;
char m_strupr(char tab[100])
{
char txt[100] = { tab[100] };
_strupr_s(txt);
return &txt[0];
}
int main()
{
char napis[100], *n;
n = gets_s(napis);
int nowy_tekst = m_strupr(&napis[0]);
cout<<nowy_tekst;
return 0;
}
Program się debuguje i bez wzgledu na to co wpisze wyswietla -52.
2..Działanie programu: Na prośbę programu użytkownik podaje napis (łańcuch najwyżej 99 znaków), który
program umieszcza w tablicy znaków o rozmiarze 100. Następnie program
przekopiowuje zawartość tej tablicy do drugiej tablicy o rozmiarze 100 i wyświetla
zawartość tej drugiej tablicy w nowej linii.
Wymagania: Przekopiowanie zawartości tablicy ma się odbywać w funkcji m_strcpy(z,do),
otrzymującej jako parametry adresy obu tablic; adres drugiej tablicy ma być
zwracany.
Moj kod:
#include <stdio.h>
#include <string.h>
int m_strcpy(char tab1[100], char tab2[100])
{
m_strcpy(tab1, tab2);
return tab2[0];
}
int main()
{
char napis[100], *n;
char napis2[100];
n = gets_s(napis);
m_strcpy(napis, napis2);
for (int i = 0; i <= 100; i++)
printf("%d", napis2[i]);
return 0;
}
Tutaj mam ostrzezenie:warning C4717: 'm_strcpy': recursive on all control paths, function will cause runtime stack overflow.
Po wpisaniu czegos i wcisnieciu enter program przestaje dzialac.