Jak zadeklarować litery i cyfry w jednej zmiennej? //Język C

0

Witam serdecznie. Na początku chcę podkreślić że sama nazwa tematu może wprowadzić w błąd bo nie wiem nawet jak nazwać ten problem. Mam za zadanie zrobić program, którym będzie wczytywał dane takie jak: wiek( użyję zmiennej int), imię( użyję zmiennej char), miasto, adres i numer domu. Z tym ostatnim jest właśnie problem bo muszę wszystko zrobić w jednej zmiennej i nie mam zielonego pojęcia jak to zrobić. Po wielu próbach albo wywala mi program albo wyświetla się tylko to co napisałem przed spacją. Program na koniec ma te dane wyświetlić.

Z góry dziękuje za pomoc i poświęcony czas.

0

Z tego co pisze w zadaniu, które dostałem to musi być chyba jedna zmienna bez żadnych zlepień. Nie ma prostszego sposobu niż ten podany jako pierwszy? Chodzi o to że dopiero zaczynam przygodę z programowaniem i raczej wątpię żeby w liście zadań, którą dostałem było coś takiego.

0

@Pan Stanisław
Możesz wczytywać wszystko do char* jako string i później konwertować:

http://en.cppreference.com/w/c/string/byte/atoi
http://en.cppreference.com/w/c/string/byte/strtol

0

Znalazłem coś takiego:

 char adres[1024];
scanf("%[^\n]", adres);

Niby proste ale jeśli nie jest na początku kodu to się nie wyświetla. Program go nie czyta i leci dalej. Ktoś wie może dlaczego?
Ps: Na początku kodu to znaczy jeśli jest po jakimś innym "scanf"

0

A nie powinno być czasem:

scanf("%c", &adres);
0

Przy

scanf("%c", &adres);

wyświetla mi się znak zapytania w kwadraciku. Taki to śmieszny symbolik. To co napisałem jest najlepsze i działa tylko że nie mogę tego umieścić pod innym scanf co jest dla mnie utrapieniem.

0
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
	
	int wiek;
	char imie[20], nazwisko[20], adres[1024];	
	system("chcp 1250 > nul ");
	
	puts("Podaj adres(miasto, ulica, numer domu)");
	scanf("%[^\n]", adres);	
	puts("Podaj imię:");
	scanf("%s", imie);
	puts("Podaj nazwisko");
	scanf("%s", nazwisko);
	puts("Podaj wiek:");
	scanf("%d", &wiek);
	
	printf("%s %s\n %s\n %d\n", imie, nazwisko, adres, wiek);
	
	
	system("pause");
	return 0;
}

Tak wygląda całość. Jeśli scanf z miastem, ulicą i numerem domu umieszczę na samym dole to nie jest czytane przez program. Trochę to upierdliwe bo musi tam być :/

0

Chyba sobie komplikujesz. Adres to string. "Kościuszki 5 m 10", "Kościuszki 5a", "Kościuszki 5/11". Jak chcesz z tego zrobić inty?

0

Jak pisałem nie ogarniam. Chodzi mi o to że kiedy próbuje użyć char to gdy wpiszę w scanf adresu typu "Warszawa budowniczych 14". Wyświetla się albo samo Warszawa albo nic i kompletnie pomija tą linię. Nie za bardzo wiem na razie czym jest string więc jeśli mi powiesz jak go użyć będę zobowiązany.

0

W C string oznacza kolejno: string = łańcuch znaków = tablica charów
czyli Twoje char imie[20] to "string" (dokładniej: "string w stylu C")

0

Mógłbyś zaprezentować dokładnie jak by to miało wyglądać jeśli chodzi tylko o adres tzw napisać kod?

0

spróbuj coś takiego:

char adres[1024];
scanf("%10[0-9a-zA-Z ]", adres);
0

To samo co poprzednik, faktycznie działa ale umieszczone pod prośbą podania imienia, nazwisko itp jest po prostu pomijane :/
Coś źle zrobiłem w samym kodzie?

0

Dangling newline.

0

Może powinieneś poczytać o uniach (https://pl.wikipedia.org/wiki/Unia_(programowanie))? Wydaje mi się, że pomogły by rozwiązać Twój problem.

1
    scanf("%d\n", &wiek); // ewentualnie "%d" i next function getchar();

    scanf("%[^\n]s", adres);
 

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