be run in DOS mode

0

Napisałem taki program i po wpisaniu litery 'a' wyświetla taki tekst jak w tytule

#include <windows.h>
#include <stdio.h>

int main(){
	char *str;
	scanf("%s",&str);
	printf("%s",str);
}

user image

A po wpisaniu 'aa' program się wywala! Czy to poprzez przez odczyt złej komórki pamięci? Jak to naprawić

2

UB, odczyt niezainicjalizowanego wskaźnika. Zaalokuj mu pamięć.

np:

    char *str = malloc(100);
    scanf("%s",str); // bez &
    printf("%s",str);
0

Okej już rozumiem swój błąd. Dziękuję Ci za pomoc :)

1

Są tu dwa błędy. Jeden to brak alokacji pamięci a drugi to pobranie adresu wskaźnika zamiast użycia samego wskaźnika. nawet gdybyś miał zablokowaną pamięć to tamten kod nadal dałby dziwny wynik bo nadpisałeś sobie stos ;)

0

Przy okazji, ten "dziwny" ciąg pochodzi od łańcucha This program cannot be run in DOS mode, znajdującego się zaraz na początku pliku wykonywalnego.

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