Pierwszy scanf wczytuje tylko liczbę zmiennoprzecinkową, a pamiętaj, że tam jest również enter. Zostaje on w buforze i trafia do drugiego scanf. Możesz to sprawdzić debugując program lub - co jest bardziej popularne wśród początkujących - zrób wydruk zmiennej ch. Musisz wyczyścić bufor przed wykonaniem drugiego scanf: [syntax=c]fflush(stdin);[/syntax]
Chodzi o to, żebyś odczytał sobie wszystko jak leci z stdin, np. używając funkcji read(), fread() albo fgets() (tą ostatnią można polecić, całkiem wygodna). Następnie w buforze wykonujesz przetwarzanie wszystkich magicznych znaków które chcesz obsługiwać - np. '\b' - a potem na tym buforze wykonujesz funkcję sscanf(). Swoją drogą rozwiązaniem problemu...
scanf() nie działa - dlatego ponieważ funkcja ta nie wczytuje białych znaków, w tym znaku nowej linii (dla %d) i zostaje on w buforze. Żeby to ominąć trzeba napisać małą funkcję, która czyści bufor przed następnym scanf-em. Np. coś takiego: void flush( void ) { int c = 0; while( c != '\n' && c != EOF ) c = getchar();...
Bo kazales jej to robic - %s oznacza wczytan8ie do bufora napisu znakowego o dlugosci nie wiekszej niz rozmiar bufora - 1 jesli hcesz wczytac 3 slowa musisz zastosowac formant wycinajacy pojedyncze napisy ( poszukaj w manualu C bo nie pamietam teraz ktory to byl ) i wczytac go do trzech zmiennych np tak ( zakladajac ze poszukiwanym formantem jest m...
Jak dam %c to w ogóle program sie sypie. Pojawia się pytanie czy zapisać dane do pliku, program nie czeka na wpisanie (t/n) tylko od razu wyświetla napis naciśnij jakiś klawisz by zakończyć działanie programu. Mnie nic nie przekona, programowanie w C to porażka. Pamiętam jak kilka lat temu programowałem w Turbo Pascalu, tam wszystko co zgadzało się...
The getchar function reads a single character from the input stream using the _getkey function. The character read is then passed to the putchar function to be echoed. (...) The scanf function reads data using the getchar routine. Tyle jesli chodzi o opis z dokumentacji. Wynika z niej, ze echa nie mozna wylaczyc. Uzyj _getkey(). The _getkey function...
Witaj, Najpierw sam przetestuj kod- podstawowe bledy: -na gcc musialem dodac include <stdbool.h> - " " w include oznacza ze pliki naglowka znajduja sie w katalogu z aplikacja- zmien to na <> bo sa to standardowe pliki .h - masz nie zamknieta klamre w funkcji DodajOsobe, co powoduje blad - funkcja UsunOsobe nic nie zwraca (void), a pozniej...
Witam. Ucząc się C rozwiązuje zadania z książki S.Prata "Szkoła programowania: Język C" Czytając forum nie znalazłem wystarczającej odpowiedzi więc proszę o rozwinięcie następujących kwestii przedstawionych w książce: [syntax=c] int main(void) { char tablica[30]; int idx_end scanf("%s",tablica); idx_end = strlen(tablica); for(; idx_end>=0; idx_end--)...
Tak sprawdziłem 32 to spacja nie rozumiem czemu prosty warunek: [syntax=c] while(znak==32) { scanf("%s", znak); } [/syntax] nie dziala ? lub taki: [syntax=c] for(i=1;i<MAX;++i,++licznik1) { if(cyfry=='\n'&&cyfry==' ') break; scanf("%d", cyfry); } [/syntax] Zamiast scanf probowalem podmienic na getc, fgetc, getchar ale wywala jeden i ten sam...
Miałeś przeczytać manual do scanf(), link podawałem w poście powyżej... Eh lenistwo, lenistwo... ;) Scanf przestaje czytać wejście po napotkaniu pierwszego znaku, który "nie pasuje" do konwersji. W przypadku wywołania scanf("%79s", liczba); konwersja kończy się po napotkaniu pierwszego białego znaku - czyli najprawdopodobniej znaku...
Witam. Program nie dzialal, bo nadal bylo kilka bledow np. w wywolaniu funkcji scanf bylo znak zamiast &znak itp. Po co deklarowac zmienna "znak" jako tablice, a nie jako zwykla zmienna typu char? #include <stdio.h> int main(void) { char znak; char lancuch[30]; int i,zn; printf("Prosze podac znak: "); scanf("%1c", &znak); printf("A teraz...
Zmienna result nie może być wskaźnikiem bo scanf przez %s kopiuje zawartość źródła do zmiennej która siedzi pod %s. To znaczy może być wskaźnikiem ale musi wskazywać na jakiś obszar pamięci a nie na przypadkowe "gdzieś w pamięci". Dwa, że obszar trzeba zainicjować zerem w pierwszej komórce na wypadek gdyby scanf nie dopasował wzorca do rzeczywistych...
Zgadza się, funkcja przerywa działanie, ale w buforze nadal znajduje się znak, który trzeba odczytać. Trzeba opróżnić stdin, nie wiem jak to jest realizowane na mikrokontrolerach. Gdy funkcja napotka znak nie pasujący do wzorca wykonaj fflush(stdin), albo scanf("%c",&znak);
flushall nie jest funkcją należącą do standardu ANSI C. Ponadto nie zaleca się korzystania z niej ponieważ może wywoływać nie przewidziane działanie programu. Nie jest to dosłowny cytat tylko mój przekład. Jeśli kolega nie wierzy proszę poczytać trochę. Fakt scanf czeka na wprowadzenie znaku jednak to on powoduje problem. Wystarczy, zamienić [syntax=c]...
Szanowni Forumowicze, uruchomiłem sobie sprzętowego UARTa wykorzystując bibliotekę ze strony atmela. Wszystko działa, łączę się z terminalem na komputerze, wyświetla się to co powinno. Dodałem też funkcję do wysyłania całego łańcucha znaków wykorzystując wskaźnik, gdyż w atmelowskiej bibliotece znalazłem jedynie do wysyłania konkretnych pojedynczych...
A jaki to ma sens, bo ja nie widzę tutaj na razie żadnego. Konkretnie w kodzie, to mam na myśli. liczba to funkcja, a Ty próbujesz wczytać do niej ciąg jako inta z konsoli. Czy to się w ogóle kompiluje? Chodziło Ci chyba o scanf ("%lu", &p); %d to int ze znakiem %u to int bez znaku (unsigned) modyfikator l oznacza typ long czyli...
Witam, "zły nauczyciel kazał mi" napisać prosty program szyfrujący. Wybrałem szyfr rot 13. Polega on na tym, że po wpisaniu tekstu szyfr "podstawia" litery z alfabetu łacińskiego na litery z tegoż alfabetu przesunięte o 13 miejsc w prawo. Np. dla litery 'a' podstawia 'n' itd. Mój program ma w sobie 2 tablice z alfabetem, z których jedna (podstaw) jest...
(at)szelus "Mógłbyś podsłuchiwać własną transmisję... " Mogę, tyle że oscyloskopem bez pamięci, który w dodatku śmieci na linii... :-( Jak dla mnie nadawał się tylko do testowania ogólnego stanu linii (przydźwięk i czy coś leci, jak to wygląda - stabilnie czy nie, i tylko przy ciągłym wysyłaniu tego samego znaku przez ATMEGĘ, np. 0xFF, 0xAA, 0x55 i...
Cześć Chciałbym rozwiązać następujący problem z programowania w C (poziom początkującego): Muszę pobrać od użytkownika 4-cyfrową liczbę np 1234, następnie podzielić ją na 4 oddzielne cyfry, do każdej cyfry dodać 2, połączyć cyfry z powrotem w jedną liczbę i wyświetlić na ekranie. Jak to zrobić? Z wyszukiwarki wyszło mi że można tą liczbę pobrać jako...
Scanf zwraca numer wpisanych znaków, wiec zrob coś takiego x = scanf("%c", &s); for(a=0;a<x;a++); Pozdrawiam
Witam. Generalnie mam problem z komunikacją pomiędzy LPC2148 a AD7794 przy użyciu SPI. Wynik komunikacji wysyłam poprzez UART na terminal i otrzymuję dziwne wartości. Praktycznie takie same efekty mam przy użyciu SPI na portach P0.4 SCK, P0.5 MISO, P0.6 MOSI, P0.7 CS, jak i skonfigurowanym SSP na portach P0.17 SCK, P0.18 MISO, P0.19 MOSI, P0.20 CS....
dejmos , kolega zapędził sie z nawiasami, poprawiłem to i dodałem warunke wyjścia z while. Pozdrawiam
Witam, nie chce mi się tego sprawdzać, ale zakładam, że "scanf("%c", &symbol)" czyta jeden znak, a "4" i "Enter" to co najmniej dwa znaki. Policz przy wpisywaniu. Pozdrawiam.
scanf zwraca w wyniku ilość poprawnie wprowadzonych danych, np: double liczba1; int wynik; wynik=scanf("%lf",&liczba&... w zmiennej wynik będzie wartość 1 jeżeli scanf poprawnie odczyta liczbe, lub 0, jeżeli tego nie zrobi, a np. w takim przypadku: scnanf("%lf%c%lf",&liczba1... scanf zwroci 0,1,2, lub 3....
Dodaj [syntax=c]scanf("%c",&x);[/syntax] po bloku instrukcji switch - scanf odczytuje ci i klawisz (1,2,3) i znak ENTER
Jeszcze jeden błąd zrobiłeś, w scanf. Pamiętaj, że nazwa tablicy jest adresem na pierwszy element. [syntax=c]#include <stdio.h> #include <stdlib.h> int main() { int A; char b[1000]; printf("A: "); scanf("%999s", b); // wczyta tylko 999 znaków żeby nie wyjść poza tablicę (tysięczny - ostatni - znak to NULL) A = atoi(b); printf("[%d]\n", A);...
Prawie nie do zrealizowania samym scanf. Moesz co prawda napisac wasną funkcję obsługi stdio ale problem jest że nie wpływa to na przerwanie sscanf. Jest to generalnie ciężko obejść jako że nie ma zaimplementowanej funkcji select np. Musisz czytać własnymi funkcjami uarta i pisac do bufora - kiedy bufor jest pełny (tzn np osiągnie odpowiednią ilość...
if ((x >= '65') && (x <= '90')) { Dwie sprawy: 1. Nie jesteś w Pascalu więc nawiasy przy warunkach są zbędne. 2. Zapis w pojedynczym apostrofie dotyczy pojedynczego znaku więc piszemy np. 'a', 'b', ..., 'z' itp. dwa znaki występują tylko przy znakach specjalnych np. '\n' - znak końca linii. scanf ("%c", &x); Od kiedy w ten sposób...
Jak uniemożliwić wprowadzenie liter do zmiennej float? Najprościej - pobieraj znaki pojedynczo i filtruj tylko to, co chcesz żeby było dozwolone. Przy okazji rozwiążesz słynny problem kropki/przecinka. Jednak podany tekst wyświetlany jest tylko do spacji. Związane jest to z działaniem funkcji scanf - poczytaj dokładnie jak się ona zachowuje (jak są...
(at)assassin90 - sprawdź dokładnie jaka jest specyfikacja programu i co ma robić w przypadku, gdy na wejściu pojawią się nieprawidłowe dane, takie jak: * puste wiersze * zbyt długie liczby * kilka liczb w wierszu * śmieci Zwykle najprostsze podejście jest najlepsze, typu: bool isOk = true; while (isOk) { char digitString[65]; int...
scanf("%d\n",&y); Po co Ci znak końca linii w scanf? z=+y; W C# można tak z+=y; ale nie słyszałem o takim zapisie jak u ciebie... Teraz jeśli pętla byłaby dobrze napisana to maksymalnie możesz dodać 10 liczb. hmmm... ja widzę w kodzie komentarz: Sumowanie 10 kolejnych liczb wpisywanych przez uzytkownika
[syntax=c]#include <stdio.h> #include <math.h> #include <stdlib.h> int main (){ int x=0,y=0,s=0; float w=0; char znak[10]; printf("Podaj liczbe x \n"); scanf("%i",&x); printf("Podaj liczbe y \n"); scanf("%i",&y); printf("Podaj znak \n"); scanf("%s", &znak); switch (znak[0]){ case 'g': s=x+y; printf("Suma wprowadzonych liczb...
Mam taki program: #include<stdio.h> int main(void) { int x; char str[10],znak; printf("Podaj jakis znak\n"); scanf("%d",&x); printf("Ten znak to %d !!!\n",x); printf("Nacisnij jakis klawisz by wyjsc\n"); scanf("%c",&znak); return...
Problem rozwiązany. Zapomniałem o wczytaniu drugiego znaku. Rozwiązanie: scanf("%c %c",&znak1,&znak2);
najpierw trzeba pobrać łańcuch (text), czyli jakiś scanf("%s", str) potem sprawdzamy, czy pasuje do wzorca (w int n; float x; n=scanf("%f", &x); if(n<>1) printf("kaszanka\n"); Większość programistów, z tego co zauważyłem, nie sprawdza wartości zwracanej przez scanf, a to nie dobrze, bo scanf zwraca...
Najpierw scanf() ale do łańcucha znaków (tablica char), a potem na tym łańcuchu porównanie z "n" i jeżeli się zgadza, to wyjście, a jeżeli nie, to można użyć konwersji z łańcucha na liczbę. Na przykład za pomocą atoi() z stdlib.h , z tym że tego nie ma chyba w ANSI C, ale jest w ISO. Można też od biedy zrobić sscanf() na tym łańcuchu, ale to mniej wydajne.
Sprawa jest prosta - scanf("%c", &c) wczytuje pojedynczy znak, ale pozostaje Ci jeszcze w buforze stdin nieskonsumowany znak końca wiersza. Ten zostaje przechwycony przez kolejne wywołanie scanf(...). Sprawa wczytywania z konsoli jest dodatkowo skomplikowana przez buforowanie w trybie liniowym, oraz przez nie zawsze pożądane pomijanie białych znaków...
Witam Mam taki prosty kod: [syntax=cpp]#include <conio.h> #include <iostream> #include <locale.h> #include <string> using namespace std; int main() { setlocale(LC_ALL, "Polish"); string str; getline(cin, str); cout << str << endl; _getch(); return 0; }[/syntax] I takie pytanie: Dlaczego po wywołaniu setlocale cout/printf...
Zwraca :P [syntax=c] #include<conio.h> #include<stdio.h> #include<ctype.h> #include<stdlib.h> unsigned char tablica[50]; int znaki; char pusty; int losuj(int a) { for(int i=0;i<a;i++) { unsigned char litery = 'A' +( rand() %( 'Z' - 'A' ) ) +1; tablica[i] = litery; } return 0; } int main(void) { printf("Podaj ilosc losowanych...
Źle mnie rozumiesz... jeśli podasz 0 to X będzie miało wartość równą kodowi ASCII *znaku* 0 rzutowaną na int (bo char to byte a nie int). scanf() jest poleceniem języka ANSI-C choć po przemyśleniu - zachowa się tak samo jak cin... Jeśli chodzi o to zapętlanie się to jest chyba jakiś feler w Dev-Cpp, nie powinno się tak robić. P.S. Nie obraź się ale...
scanf("%c", jedynie jeden znak.
Nie mam czasu tego sprawdzić, ale chyba chodzi o to, że w strumieniu pozostaje niewyciągnięty znak końca linii. Dodanie cin.ignore() załatwi sprawę: cin >> cnt; // (lub scanf, też nie działa) cin.ignore(numeric_limits<streams... '\n' ); Instrukcja wyciąga ze strumienia i ignoruje tyle znaków, ile...
Witam, Po pierwsze - kod umieszczamy (z poprawnymi wcięciami) w znacznikach [code]. Po drugie, funkcji gets() nie uzywamy, ponieważ nie pozwala ona uniknąć potencjalnego przepełnieniem bufora - nowsze kompilatory nawet o tym ostrzegają. Zamiast tego można wykorzystać fgets(). Po trzecie, czytamy manual. A w manualu jest napisane, że scanf() kończy czytanie...
Jak to sie dzieje? Zostaje zwrócona wartość nieokreślona, która mocno zależy od wykonywanego kodu oraz kompilatora. Tym samym rodzi się pytanie czy EOF jest jakoś specjalnie traktowany? EOF nie jest znakiem, oznacza koniec danych, więc nie może zostać zwrócony do bufora wejściowego - scanf napotkawszy EOF kończy działanie (choć to też zależy od kompilatora)...
Witam! listing nr 1: deklaracja: data_ur data_ur1 nie dość, że deklaracja występuje PO instrukcji zamiast przed nią, to jeszcze jest błąd w nazwie typu. (Czyżby to w ogóle się skompilowało bez uwag czy błędów?) Zamiast: [syntax=c]int main(void) { printf("struktury\n" data_ur data_ur1; ... ... ... }[/syntax] powinno być: [syntax=c]int main(void) { struct...
Do porównywania napisów służy funkcja strcmp: [syntax=c]#include<stdio.h> #include<string.h> int main() { char tekst[10]; printf("wpisz stop \n"); scanf_s("%s", tekst, sizeof(tekst)); if (strcmp(tekst, "stop")==0) { printf("ok"); } else { printf("not ok"); } return 0; }[/syntax] PS. W kodzie nigdy nie powinieneś robić powtórzeń
Po prostu po pierwszym scanf-ie pozostaje znak nowej linii w buforze. Kolejny fgets czyta pusta linie. Może wypisuj to, co wczytujesz za każdym razem. Operacja fflush(stdin) nie jest zdefiniowana przez standard.
chcialem to wstawic do mojego programu ale co mi nie chce zadzialac?? widzi ktos tu jakis blad?? #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { printf ("**************************************... printf ("**************************************... printf ("********************...
Hej mam problem , napisałem prosty kalkulator w c i mi źle liczy: przy dodawaniu odejmuje, odejmowanie dobrze liczy , przy mnożeniu zawsze wychodzi 0, przy dzieleniu zawsze wychodzi 1, nie mam pojęcia co jest grane, pomóżcie proszę A oto kod: #include<stdio.h> #include <stdlib.h> int main() { int a,b,c,znak; printf("podaj...
Czy źródła newliba są te same co linaro? Czy dodałeś jakieś łatki od siebie? Bo tak w ogóle to wiesz czemu znak "\b" zawiesza scanf()? Wszystko inne działa, a jak wcisnę backspace, to w ogóle już nie wchodzi do _read() i scanf() wisi.
Lustrzane odbicie: [syntax=c] #include<conio.h> #include<stdio.h> #include<ctype.h> #include<stdlib.h> long int liczba; char pusty; void lustro(int a) { int k; while(a>0) //dopuki a>0 (liczba przekazana jest teraz pod 'a') { k=a%10; a=a/10; if(k!=0) printf("%i",k); } } int main(void) { system("chcp 1250"); printf("\n\nPodaj...
Dobra, jeszcze w tym wyświetlaniu 'i' zacznij od zera: for(i=1;i<=strlen(haslo);... cout<<haslo[i]; zmien na: for(i=0;i<strlen(haslo);i... cout<<haslo[i]; A tak na marginesie to wyświetlenie tego można załatwić jedną funkcją: cout << haslo; . I przy inicjalizacji zmiennej i tez...
Działający kod: [syntax=c]#include <stdio.h> #include <stdlib.h> int main() { char znak[1024],koniec;//deklaracja zmiennych znakowych int i; printf("Program ktory zamienia znaki ASCII na kod alfabetu Morse'a.\n"); do { printf("Podaj ciag znakow ASCII: \n"); fflush(stdin); fgets(znak, sizeof(znak), stdin); for (i=0;znak[i]!='\0';i=i+1) {...
całkować umiemy :)) dzięki za pomoc ale ja nadal nie za bardzo wiem jak to zapisać żeby program wiedział że pierwszy wyraz ma potęgę p. 3 itd. Naisałam dalej coś takiego. #include <stdio.h> #include <math.h> int main () { const int NMAX=100; int stopien, i, x; float a, b, N, abc[NMAX], calka[NMAX], pot[NMAX],...
Ach, znowu ta stdio... Tyle z nią problemów, że powinni jej zakazać używać ;). U mnie nie działa system("pause"), zależy to od kompilatora, dlatego zamiast tego warto pamiętać o czyszczeniu standardowego wejścia, poprzez wczytywanie znaku nowej linii: #include <stdio.h> int main() { float f, c; printf ("podaj ilosc stopni...
Wszystko kompilowane w Visual studio, chyba wersja 2010. Sortowanie przez wstawianie: [syntax=c] #include<conio.h> #include<stdio.h> #include<ctype.h> #include<stdlib.h> int nr=0,n=1,k=0,k2=0; int A1[10],A2[10]; int licz3; int v; int i,g,d=0,wybor=0,b=0,x,j; char pusty; bool CzyNieWiecej4(int elem1, int elem2) { return (elem1<=elem2);...
1. Ze znakiem czyli liczby ujemne, dodatnie i zero. Bez znaku czyli liczby dodatnie i zero. Zobacz na zapis liczb w Naturalnym Systemie Binarnym (bez znaku) i U2 (ze znakiem). 2. Jeśli się nie mylę to program traktuje zmienną jakby miała inny typ i dlatego różnie ją interpretuje, nie wiem czy na pewno tak - rzadko używam printf i scanf. 3. -1 ze znakiem...
Hey, mam taki problem: chcę za pomocą kodu w pythonie kontrolować inną aplikację (konsolową), ale działa to tylko dla przypadku, gdy moja aplikacja nie używa getch() ani getche(). Niestety jest to dla mnie nie do przyjęcia :( szukam od wielu dni rozwiązania mojego problemu i nic nie znajduję :( Kod w pythonie [syntax=python] from subprocess import *...
a ja nie rozumiem programowania :) i już całkowicie się pogubiłem ... w kodzie pokazanym przez ciebie jest za dużo niezrozumiałych rzeczy std::cout << "..."; for (;;) { std::cin >> znak; // std?? co to czemu po tym jest :: if (std::tolower(znak) < std::tolower(poprzedni_znak&...
Zamiast printf możesz używać cout - w końcu to C++. Do czytania znaków jest scanf albo cin. Sprawdzenie pobranej wartości zrobisz za pomocą if, natomiast przeliczanie to kwestia dodawania / odejmowania. Spróbuj napisać cokolwiek i wtedy jasno napisz, z czym masz problem.
Po if (k<p) { printf("Podales nie wlasciwy przedzial - gorny zakres jest mniejszy od dolnego! \n"); } w drugim programie powinieneś mieć else i dopiero w tym pętle for , bo tak jak masz teraz bez względu na wynik if , pętla for i tak się wykona. A czy teraz jest już dobrze? [syntax=text] int p, k; float v, wynik;...
Mam napisać program który wpisuje do tablicy poszczególnie wprowadzone znaki łącznie z spacjami i tab. Czy da się zrobić coś takiego aby funkcja scanf przyjmowała tylko 1 znak i automatycznie bez zatwierdzania enterem program szedł dalej? Bo tylko udaje mi się tak napisać program że wpiszę znak i musze go potwierdzić enterem, no i jako znak liczy też...
teoretycznie do char int n; scanf("%d",&n); char tab[n]; co też nie jest poprawne - a działa
Według mnie program działa, tylko nie w taki sposób jak oczekiwałeś. Twój błąd polega na wstawieniu polecenia getchar(). Nie jest ono potrzebne, polecenie scanf wczytuje to co wpisałeś z klawiatury i zaraz po nim możesz dać porównania. Dodanie getchar() spowodowało że porgram po wczytaniu tego co wpisałeś z klawiatury (polecenie scanf()) próbuje wczytać...
[syntax=c]#include <stdio.h> int main(int argc, char *argv[]) { char character; printf("Podaj znak: "); scanf("%c", &character); if (character < 'A' || character > 'Z') { printf("Podany znak jest z poza zakresu!\n"); return 1; } for(char end_character = 'A'; end_character <= character; ++end_character) { for(char c = 'A'; c < end_character;...
Przecież to zadanie dotyczy sprawdzania poprawności danych wejściowych - a Ty założyłeś, że będzie 5 znaków, spacje, 10 znaków, spacje itd... Jak będzie więcej niż 5, 10 czy ileśtam, to Twój program, kolokwialnie mówiąc, pójdzie w buraki. Używając konwersji %s scanf pominie białe znaki - już to dyskwalifikuje taki pomysł. Poza tym musisz mieć w tablicy...
Zawsze pozostaje funkcja scanf(...) :)
To jak ma być wprowadzany tekst, pojedyncze znaki bez przerwy jednym ciągiem, czy jak? Z tego co napisano w zadaniu ma być jedno z: Dodano po 2 (at)-psiak- wykładowca mówił, żeby nie używać na razie vectora, chyba, że ktoś go już zna. No to, [url=https://pl.wikipedia.org/wiki/Kurdy... przeczytaj jedną stronę i go poznaj: http://www.cplusplus.com/reference/vecto...
Witam Mam problem z odczytem z pliku plik wejściowy wygląda następująco 1 2 3 4 5 6 7 8 8 9 10 11 12 13 14 plik wyjściowy 4064048 4064048 0 0 0 0 0 0 0 Niestety powinien wyglądać podobnie ja wejściowy :| Tak wygląda kod programu - kompilator to GCC W zastosowaniu do plików tekstowych to nie jest błąd, jednak ogólnie, w takich konstrukcjach zmienna...
Mam pytanie czy da się zadeklarować zmienna char i przypisać do niej znak "*" a później ja wywoływać? W poniższym programie tak zrobiłem i wyświetla mi zamiast "*" literę "Ą", wiem że zamiast tego można napisać - printf("*"); ale mi bardziej odpowiada to co to pierwsze. #include <stdlib.h> #include <stdio.h> #include <math.h> int a,b,c,d,e,szer,dl;...
Dla prostych zadań z parsowania przydaje się specyfikator funkcji scanf(). Na przykład: char tablica[81]; scanf("%80[a-zA-Z ]", tablica); /* wczytaj do 80 znaków do tablicy, dopuszczalne znaki to a-z, A-Z i spacja. */ scanf("%80[^0-9-]%n&quo... tablica, &n); /* wczytaj do 80 znaków do tablicy, w...
wszelkie warianty funkcji scanf z formatem %s czytają "wyrazami" - czyli pomiędzy białymi znakami.
Jak to jest że kompilując programy przez gcc pod Ubuntu, nie potrzebowałem stosować tej funkcji? Dlaczego tak właściwie mam jej używać? Czy za każdym razem, kiedy chce coś wczytać a potem wypisać na ekran mam jej używac? Po każdym użyciu getchar(), scanf() itd.? Z buforowaniem przy funkcji scanf() spotkałem się tylko w momencie pomijania niepotrzebnych...
Zrób tablice kwadratową : char tablica [index][max dlugosc slowa]; Czyli np. char tablica [1000][30]; Takie coś pomieści 1000 wyrazów o długości do 30 znaków. A wczytujesz : scanf("%s", &tablica[index]); Powodzenia ! P.S Jeśli ma to być dynamiczne to może jakaś tablica list z STL'a, tak będzie najprościej :)
To nie są znaki tylko raczej bajty - tablica nie tworzy napisu (znak o kodzie 0 zakończyłby napis i wyszłoby 254). Gotowej funkcji do konwersji dziesiętnej raczej nie będzie. Można albo skonwertować to na napis dodając do każdego elementu tablicy wartość '0' i potem skorzystać z funkcji char * => int (scanf, atoi lub wręcz strumienie c++), albo...
Jeśli nie wiemy, co przyjdzie po UART, to sscanf nie pomoże - trzba napisać parser w postaci automatu Zgadzam sie z kolegą BlueDraco całkowicie. W takiej sytuacji trzeba parsować strumien przychodzacych danych, wyłuskujac interesujace nas elementy. Łatwo (relatywnie) sie to robi w przerwaniu, wymaga duzo mniej pamieci, nie trzeba buforawac kosmicznych...
Dżyszla podałeś kod dla C++ :) Może tak: #include <stdio.h> unsigned wczytaj_liczbe(unsigned ile_prob, unsigned domyslna) { while (ile_prob--) { unsigned liczba; /* Wypisz znak zachęty? */ if (scanf("%u", &liczba) != 1) { if (feof(stdin)) { /* koniec wejścia */...
uzyłbym funkcji scanf("%s",&tablica); potem policzyłbym ilosc znaków funkcją; while(tablica[k]!=NULL) { k++; } a potem wydrukował wyraz od tyłu...tak: for(int i=k;i>0;i--) { printf("%c",tablica[i]); } pozdrawiam :)
witam prosilbym bym bardzo o pomoc w napisaniu programu w C, a konkretniej gry. chodzi o kolo fortuny. Program chce napisac w jak najprostszy sposob , tzn. bez trudnych funkcji, najlepiej gdyby skladal sie z petli : for,while, do while, if . sam juz probowalem cos zrobic, ale cos nie dziala : #include <stdio.h> #include <stdlib.h> int main(int...
Popraw ten fragment: [syntax=c]... printf("Podaj imie: "); scanf("%s",ccc); strcpy(tab[i].imie,ccc); printf("\npodaj wiek: "); scanf("%d",&l); tab[i].wiek=l; ... [/syntax] P.S. main - ponieważ jest typu int powinna "zwracać" wartość. dodaj [syntax=c]return 0;[/syntax] ...na końcu P.S. II Twój kod niesie niebezpieczeństwo podania ciągu dłuższego niż...
Po % występuje znak który określa typ zmiennej, jeśli będzie wywołanie funkcji: scanf("%i%i", &liczba1, &liczba2); to pobierze 2 liczby, obie typu int, pierwszą zapisze do zmiennej liczba1, drugą do zmiennej liczba2. http://pl.wikibooks.org/wiki/C/scanf
1. Deklarujesz zmienne. 2. w jakiejś skończonej pętli pobierasz(scanf) liczbę zmiennoprzcinkową (float). 3. Zapisujesz liczbę do pliku (fprintf). 4. Zapisujesz znak(char) nowej linii ('\n') do pliku. http://www.cplusplus.com/reference/clibr... http://www.cplusplus.com/reference/clibr...
Zestawy danych wyglądają zawsze w ten sposób: Imie: jakiesimie; Nazwisko: jakiesnazwisko; itd jakiesimie i jakiesnazwisko itd to zmienne, które muszę wczytać. Czyli muszę wczytać to co jest po spacji aż do średnika A jak wpisuję while(scanf("%d%c%d %c %d%c%d",a,znak,b,operacja,c,znak1,d... To po wpisaniu danych zaraz mi błąd...
Ok, dziala, dzieki. Mam jeszcze jedno pytanie: powiedzmy, ze chce wczytywac z klawiatury jeden znak while(costam){ char a; scanf("%c", a); ... } ale wtedy w buforze zostaje jeszcze "enter", ktory troche przeszkadza. Jesli po scanf zrobil bym jakiegos getchar`a, ktory by polykal "entera", mogla by zajsc sytuacja, ze wczytany do zostal by "enter", a polkniete...
Zacznę od tego, że wcale nie wyświetlasz elementów tablicy tylko je wpisujesz. Naciskasz enter więc to oczywiste, że przechodzi do nowego wiersza, możesz wstawiać spacje, bo scanf wczytuje do białego znaku. Podaj liczbe wieszy n. i liczbe kolumn m. n= 2 m= 4 1 2 3 4 5 6 7 8 Ale równie dobrze możesz wszystko wpisać w jednym wierszu: Podaj liczbe wieszy...
scanf zwraca ilość poprawnie przetworzonych formatów. W Twoim przypadku jest jeden. Wystarczy więc sprawdzać, czy scanf zwraca 1; jeśli nie - to znaczy, że nie udało się wczytać liczby.
Czyli bardzo niekompletny ten wstawiony kod. Ad.1. A do czego są Ci potrzebne w kodzie C biblioteki z C++? U mnie to nawet nie chce się z nimi skompilować. Jaki kompilator używasz, że na to pozwala? Ad.2. Ok, kod niekompletny, rozumiem. Ad.3. Ale chyba char ch nie musi być z tego powodu zmienną globalną? Przecież możesz ją stworzyć w main przed switchem....
Uwierz da sie krócej o wiele krócej nawet o 10 znaków. I wlasnie sie zastanawiam moze cos z gets zamiast scanf... chociaz wtedy trzeba by zadeklarowac wskaznik na char aha program ma zapewnione ze liczba n nie bedzie ujemna
Nie wiem czy to jest w ogóle możliwe bo fprint musi mieć zdefiniowaną funkcję wysyłającą tekst po jednym znaku. Definiujesz pośredni bufor i do niego ładujesz pojedyncze znaki. Funkcja umieszczająca znaki powinna sprawdzać poziom zapełnienia bufora i uruchamiać/resetować timer. Jeśli bufor zacznie się zapełniać lub nastąpi timeout, bufor powinien zostać...
Witam! 1) Żle zdefiniowana struktura! Pola tejże struktury zostały zadeklarowane jako 10-cio elementowe tablice wskaźników do elementów typu char a nie jako dziesięcioelementowe tablice znaków. Musisz usunąć "gwiazdki". 2) Po każdej instrukcji scanf badaj: if (slowka.slowoX[0] == '\0') /* ZLE! */ Pozdrawiam KG
Witam! To jedno z wielu rozwiązań tego problemu. Przyjrzyj się dobrze i spróbuj zrobić inaczej. Jest wiele do poprawienia i usprawnienia :) [syntax=c]#include <stdio.h> #include <string.h> #include <ctype.h> char *TMEZCZYZNA[ ] ={ "Barnaba", "Jarema", "Bonawentura", "Zawisza", "Ilia", "Jaksa", "Kosma", NULL }; char *TKOBIETA[ ] ={...
Witam mam nastepujacy problem podaje wartosci wybieram jakie dzialanie ma nastapic i program nie zwraca wyniku prosze o pomoc: #include<stdio.h> #include<stdlib.h> #include<math.h> #include<conio.h> float a,b; float wynik; int d; int key; int c; float dodaj (float a, float b) { return (a+b); } float...
Napisałem prosty program w języku C który po podaniu małej litery zmienia na dużą i odwrotnie. Problem jest w tym że jak podaję małą literę to program mi wyświetla dużą i małą. #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> //#iclude<math.h> void main() { char ch; printf("Podaj litere: "); scanf_s("%c", &ch); if (ch >= 'a' &&...
Spróbuj tego: [syntax=c]printf("Wprowadz liczbe szesnastkowa:\n"); char buf[100]; scanf("%99s", buf);[/syntax] Resztę zrób tak jak napisał Dżyszla. blue_17 szybszy :) Jednak przy wczytywaniu określ ile znaków chcesz wczytać. Bezpieczniej, zabezpieczysz się przed ewentualnym przepełnieniem bufora.
Proszę o jakiś example z tym scanf http://www.cplusplus.com/reference/cstdi... Najpierw określ co chcesz zrobić, bo na razie pokazujesz piękne rozbijanie stringów na strukturę drzewa, tylko czy celem jest fantazyjna topologia czy może raczej przekształcenie ciągów znaków oznaczających liczby na faktyczne liczby? 4\/3!!
to nie getchar, tylko albo scanf , albo cin - znacznie prościej i nie martwisz się już tak o czytanie w pętli i przerywanie.
Pisałam już programy z wskaźnikami, ale nadal nie mam pojęcia jak wczytywać tekst za ich pomocą... Szukałam już sporo w necie i kombinowałam wstawiając różne rzeczy, ale za każdym razem nie wychodzi... pewno robię jakiś błąd wynikający z braku wystarczającej wiedzy o wskaźnikach... Po pierwsze jak scanf ma wczytywać tyle ile wpisze, np. 3 znaki. Napisać...
Może po kolei: Jeśli funkcja ma przyjmować tablicę to musi mieć odpowiedni nagłówek: [syntax=cpp]void znazwa(int plansza[9][9]) [/syntax] Poza tym masz jeszcze jeden błąd z wczytywaniem nazwy. %c to wczytanie znaku, nie napisu. %s to napis. Dodatkowo podanie samej nazwy tablicy w scanfie już jest wskaźnikiem na nią, więc nie robisz dodatkowo & [syntax=cpp]scanf("%s",nazwa);...
Dzięki za szybką odpowiedź Wymyśliłem to sobie tak - program pobiera wzór funkcji za pomocą scanf i zapisuje w tablicy znaków. Dla programu jest to ciąg znaków, nie wie, że to są liczby, zmienne i operatory. Gdyby to były same liczby można by to zamienić np. poprzez atof(), ale oprócz liczb będzie tam zmienna "x" i funkcje trygonometryczne, więc zmierzając...
Ten kod powyżej co napisałem nie działa, ponieważ plik oprócz liczb zawiera jakiś tekst typu: słowo słowo wyraz przedmiot 4 słowo słówko 6 itd. I chodzi mi o to żeby pobrać cyfry jak jakieś są. A więc musze jakoś zmodyfikować ten fragment kodu: while(feof(f)==0){ od=fscanf(f,"%d",&tab[... i++; } który...
printf scanf scanf spacja klawiatura scanf
serwis goclever whirlpool uszkodzony rezystor monitor mignie
Przegrzewanie akumulatorów w słuchawkach Philips TAH6005BK/10 Schemat elektryczny Etesia MVEHH 2004 - gdzie znaleźć?