Problem nie zwracania prawidłowego stringa w C

0

Bardzo prosiłbym o pomoc, w sprawie dlaczego, w środku funkcji string1 jest taki jaki ma być, a kiedy chcę go wypisać w mainie, tablica czy string zawiera "śmieci". W mainie wypisuje na konsole uzywając printf i wtedy pojawia się problem.

char* szyfruj(char* tab, char* klucz) 
{
	int k =strlen(tab);
	int j = 0;
	int l= strlen(klucz);
	char string1[50];
	strcpy_s(string1, sizeof string1, tab);
	for (int i = 0; i < k; i++)
	{
		if (string1[i] == ' ' || string1[i] == '\n')
		{
			;
		}
		else
		{
			if (j < l)
			{
				string1[i] = (char)(((int)string1[i] + (int)klucz[j] - 130) % 26 + 65);
				j++;
			}
			else
			{
				j = 0;
				string1[i] = (char)(((int)string1[i] + (int)klucz[j] - 130) % 26 + 65);
				j++;
			}
		}
			
	}
	printf("%s\n", string1);
	return string1;
3

Zwracasz wskaźnik do obiektu który znika wraz z zakończeniem działania funkcji (notabene: to UB). Alokuj pamięć za pomocą malloc i pochodnych, lub przyjmuj parametr wyjściowy, na którym będziesz operował.

0

Wielkie dzięki za pomoc, wszystko już jasne!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1