Smieci podczas wyswietlania prostego slowa... o co chodzi?

0

Najpierw wyswietla "Od tylu: jakiesDziwneZnaki lahciM" wiec od tylu dziala, skąd te smieci?

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    const int size1=15;

    char name1[size];
    cin >> name1; // Michal

    cout << endl << "Od tylu: ";

    for(int i=(size1-1); i>=0; i--)
    {
        cout << name1[i];
    }
    return 0;
}

1

Co to jest "size" w linii 10?

8

Jeśli tworzysz piętnastoelementową tablicę, po czym wczytasz do niej sześć znaków i nulla, to dalej pozostaną „śmieci” w pozostałych komórkach, do których nic nie wczytałeś.

5

Twój kod jest mieszaną C++ i C.
Czy tak nie jest lepiej:

#include <iostream>
#include <string>

int main()
{
    std::string line;
    while (std::getline(std::cin, line)) {
        std::cout << std::string{line.rbegin(), line.rend()} << '\n';
    }
}

https://godbolt.org/z/GPbbha4Gv

4

Zawsze możesz użyć strlen() do określenia aktualnej długości wczytanego napisu.

0
void aMozeRekurencyjnie( char a ) {
if( ( a = getchar() ) != EOF ) {
	aMozeRekurencyjnie( '?' );
	putchar( a ); } }
0
#include <iostream>
#include <string>
#include <cstring>

using namespace std;

int main()
{
    char name[20];
    cout<<"Enter name: ";
	cin.getline(name, sizeof(name));
	for(uint16_t i=0;i<strlen(name)/2;++i)
    swap(name[i],name[strlen(name)-i-1]);
    std::cout<<"\n"<<name<<"\n";
    
    return 0;
}

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