Wczytanie łańcucha znaków

0

Jak wczytać z konsoli w C poprawnie łańcuch znaków, oraz czemu jest to zły sposób ?

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

int main ()
{
    const char *tekst1,*tekst2;
    scanf("%c %c",&tekst1,&tekst2);


}

2

Musisz mieć zaalokowaną pamięć do której wczytujesz (statycznie lub dynamicznie). Nie robisz tego i zapisujesz "w próżnię" (a raczej w losowe miejsce w procesie), dlatego to zły sposób - bo to UB.

0

@kq: Mógłbyś napisać jak to by miało wyglądać poprawnie przy dynamicznej deklaracji ?

2

Tak po 2 zerknięciu w kod są jeszcze 2 rażące błędy:

  • wskaźnik jest na const char. Nie możesz nadpisać const (konceptualnie).
  • przekazujesz adres wskaźnika, a nie jego wartość.

Poprawny przykład:

char* str = malloc(10);
scanf("%9s", str);
printf("read: %s\n", str);

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