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]
Scanf zwraca numer wpisanych znaków, wiec zrob coś takiego x = scanf("%c", &s); for(a=0;a<x;a++); Pozdrawiam
Zamiast:[syntax=c]printf("%c",znak[i]);[... Wpisz:[syntax=c]printf("%d,",(int)znak[i... Zobaczysz wtedy wartości dziesiętne wypisywanych na ekranie znaków.
(at)dawid.barracuda Znaczy to, że scanf wskazuje na znak/łańcuch znaków? Nie. Funkcja skanuje standardowe wejście w poszukiwaniu tego co przekazano przez parametr fmt.
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...
#include<stdio.h> int main() { char znak[1]; char lancuch[30]; int i,zn; printf("Prosze podac znak: "); scanf("%s", znak); printf("A teraz prosze napisac lancuch znakow: "); scanf("%[^\n]", lancuch); for(i=0; i<=lancuch; ++i) { if (znak==lancuch[i]) { zn=i; } } printf("Poszukiwany znak jako ostatni jest na pozycji: "); printf("%d", zn); return...
Sypie się, bo prawdopodobnie program wczytuje znak entera ze standardowego wejścia, można to ominąć np. tak: do znak = getchar(); while (znak != 't' && znak != 'n'); Wtedy program przejdzie dalej jak wczyta t lub n. Można też zrobić tak: char znak[2]; scanf("%s", &znak); Program wczytuje wtedy znak 0 do drugiego...
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);
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();...
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....
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.
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);...
Problem rozwiązany. Zapomniałem o wczytaniu drugiego znaku. Rozwiązanie: scanf("%c %c",&znak1,&znak2);
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...
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...
Jak ja czytam zagadnienie, nie wynika że analiza/konwersja tego bufora jest w ogóle potrzebna "wczytać jakiś ciąg (nieokreślonych) znaków". Scanf raczej do dokładnie określonych ciągów znaków. np integerów, floatów, znaków, które maja być pominiete, usuwania whitespace i paru innych. Zeby wykryć ze w ciągu jest np 'g' lub jakiś ciąg znaków to rzeczywiście...
Bo %s wczytuje string (wyraz). Ale to i tak nic nie da - będziesz musiał linijkę zatwierdzić ENTEREM. Dopiero w ramach tej linijki scanf będzie czytał po znaku, ale jeśli zastosujesz %c.
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...
Ź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...
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]...
[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...
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...
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...
(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...
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.
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...
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...
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, 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.
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 :)
Zawsze pozostaje funkcja scanf(...) :)
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 :)
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...
Dodaj [syntax=c]scanf("%c",&x);[/syntax] po bloku instrukcji switch - scanf odczytuje ci i klawisz (1,2,3) i znak ENTER
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...
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...
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...
dejmos , kolega zapędził sie z nawiasami, poprawiłem to i dodałem warunke wyjścia z while. Pozdrawiam
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...
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...
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...
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ż...
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...
Witam, napis "podaj literke" wyswietla mi tylko raz (pewnie zalezy to od kompilatora - ja korzystam z Dev-C++ ver.4). Co do wpisywania hasla chyba najprosciej skorzystac z scanf. Pamietaj o sprawdzeniu zakonczenia ciagu, czyli znaku /0, aby oba ciagi byly tej samej dlugosci. Ekran mozesz wyczyscic poleceniem systemowym: system("cls"); Pozdrawiam
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...
teoretycznie do char int n; scanf("%d",&n); char tab[n]; co też nie jest poprawne - a działa
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...
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...
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...
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
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
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;...
Fragement kodu: [syntax=c] printf("Podaj nazwe pliku do szyfrowania z tekstem jawnym: \n"); scanf("%MAX_PLIK-1[^\n]s",plik_we); printf("Podaj nazwe pliku do szyfrowania w ktorym ma byc zapisany zakodowany tekst: "); fflush(stdin); //scanf(" %MAX_PLIK-1[^\n]s",plik_wy); fgets(plik_wy, MAX_PLIK, stdin); printf("Dalszy tekst... "); [/syntax] Program poprawnie...
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 */...
scanf("%c", jedynie jeden znak.
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...
No ale jak wyślesz to '\b', to musisz je w końcu odczytać chyba, bo ono będzie siedziało w buforach cały czas... scanf() zwraca -1, bo '\b' nie pasuje do wzorca - oczekujesz liczby, a backspace liczbą nie jest. Tak więc read() nie jest wywoływane, bo aktualnym znakiem w buforze jest '\b' i dopóki go nie odczytasz to nie ma potrzeby wywoływać read()......
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.
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 ("********************...
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...
Proszę ;) #include "stdafx.h" #include "stdio.h" int main() { int tryb; char text[8]; //tablica dla wprowadzanych znaków int lz=0; //liczba znaków we wprowadzonej tablicy char abecadlo[] = {"abcdefghijklmnopqrstuvwxyz&q... char podstaw[] = {"nopqrstuvwxyzabcdefghijklm&q...
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 *...
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!!
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...
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);...
Mam problem z takim oto programem. Chcę żeby pobrał ode mnie konkretną liczbę liczb i posortował je, a następnie wyświetlił je tylko bez duplikatów, czyli z 1,2,3,4,4,7,2 powinien wyświetlić 1,2,3,4,7. Problem jest taki, że aktualnie program pobiera ode mnie o 1 liczbę za dużo, jeśli się bawię i to próbuję naprawić to zazwyczaj zapomina ostatniej liczby...
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
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ą...
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ć...
Ja mam komplet drugi i jestem z niego bardzo zadowolony. Przejrzyj sobie na helionie przykładowy rozdział tej książki. Jest bardzo dobrze napisana, po każdy rozdziale zawiera podsumowanie, pytania do odpowiedzenia oraz mnóstwo zadań do samodzielnego wykonania. Korzystam z niej bardzo często, chociaż jak człowiek opanuje już bardzo dobrze język, to nie...
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....
C można porównać tabele zawierającą ciąg znaków z ciągiem znaków? 1221D:\Informatyka\test_char3.cpp ... ISO C++ forbids comparison between pointer and integer [-fpermissive] Chce to użyć do kalkulatora. Żeby nie jak do tej pory gdy naciśnie się "s", to się zatrzyma tyko jak napiszę się "stop". [syntax=c]#include<stdio.h>...
[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;...
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...
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[ ] ={...
Działa Ci ten program? To masz dużo szczęścia. U mnie nawet się nie chce skompilować ;) 1) LICZNOSC[21]={20*0} - to działa, ale nie oznacza "dwudziestu zer", tylko jedno zero, a kompilator inicjalizuje resztę tablicy zerami automatycznie 2) Masz za dużo argumentów w printf (format w drugim wywołaniu jest nieprawidłowy - co to jest "%2"? 3) używając...
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],...
Na podstawie powyższych postów, wydaje się, że najbardziej prawdopodobny scenariusz nakreślił użytkownik BoskiDialer: Inna możliwość, to błąd w kodzie, gdy bajt o kodzie 0 jest analizowany jako koniec ciągu znaków (np dane od uartu odbierane jako ciąg znaków) co powoduje przerwanie odbierania, ale dalszy segment kodu analizuje dane w stałych porcjach,...
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&...
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...
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ż...
Poza tym nie trzeba wcale mieć timerów ani zadnego supervisora, jeśli masz gwarancję, że dane przetworzysz szybciej, niz przychodzą. A parser i obróbka może się mielić najzwyklej w pętli głównej. Ja tutaj patrzę od razu pod kątem podpięcia takiego odbioru pod strumienie (czyli FILE, scanf() itd.), które z racji swojej asynchroniczności generalnie potrzebują...
(at)Krzysztof Gustaw dzięki za kod. Działa bardzo dobrze ale nie do końca rozumiem jak... Co oznacza linia fputc(',', control ++ == 0 ? f2 : f3); Dodano po 53 Kod (at)Krzysztof Gustaw jest skuteczny, operuje na pojedynczych znakach. A jak to zrobić wiedząc że szerokość pól jest stała i czytając stringi o odpowiedniej szerokości. Coś mi nie wychodzi...
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...
w ostateczności mógłbym customizować jakiegoś printf'a żeby w integery wstrzeliwał mi przecinek Nie ma co "customizować", wystarczy odpowiednio wyświetlić. Przykładowo jakbyś chciał 2 miejsca po przecinku: [syntax=c]float floatValue = ...; unsigned int value = floatValue * 100f; printf("%u.%02u", value / 100, value % 100);[/syntax] Ze scanf() da się...
Potrzebuję zrealizować komunikację przez USART z możliwością obsługi przerwań. Chodzi o to, że w czasie odczytu danych z enkodera chcę móc wywołać przerwanie od danych przychodzących z komputera. Nie bardzo wiem jak się za to zabrać. Nie mogę używać strumieni do pobierania danych z USART bo mogły by zablokować cały program (getch lub scanf). Chciałem...
Nie nie. Cout czy scanf występują w obu (c i c++), inna jest tylko składnia i biblioteka w której siedzą. Jeśli chcesz używać do wprowadzania albo wyprowadzania danych - to nie ma najmniejszego problemu żeby używać ich wymiennie. Odnośnie isdigit: Sprawdź w helpie co to za funkcja i co jej trzeba wpisać :) Jeśli nie pomoże - zawsze można sprawdzać czy...
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;...
Błąd pojawia się gdy zmieniam: printf("%s", "Wprowadz pin: "); scanf("%s", pin); na: pin=1234; Oto cały program: [syntax=cpp-qt]/*Funkcja int czyPIN(char []) Pobiera jako argument napis (tablicę znaków) i sprawdza, czy został podany prawidłowy PIN. Prawidłowy PIN składa sie z 4 cyfr. Cyfry nie mogą się powtarzać. Wynik funkcji: 1 - PIN OK 0 - PIN nie...
pewno robię jakiś błąd wynikający z braku wystarczającej wiedzy o wskaźnikach... W takim razie należy doczytać o wskaźnikach, zobaczyć przykładowy kod. http://pl.wikibooks.org/wiki/C/Wskaźniki... Kompilator powinien wywalić warningi do kodu, który dałeś. Nazwa tablicy jest również wskaźnikiem na nią. Ciąg znaków (string) wczytuje się za pomocą pola %s...
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...
GCC w trybie aboslutnej zgodności ze standardem kompiluje go bez problemu. Wyświetla tylko 1 ostrzeżenie: I program wyrzuca "Naruszenie ochrony pamięci" właśnie przy próbie wywołania 'gets'. Spróbuj zastąpić tą funkcję inną. Dodano po 15 Sorry, nie zauważyłem za pierwszym razem - wskaźnik wsk_osoby wskazuje przypadkowe miejsce w pamięci. To powoduje...
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ć...
Ja mam obsługę uart w ten sposób void initrs232(void) { UCSRC=(1<<URSEL) | (1<<UPM1) | (1<<UCSZ1) | (1<<UCSZ0); // UBRRL=51; // 51prędkość 9600 dla 8MHz UCSRB=(1<<RXEN) | (1<<TXEN); //(1<<RXCIE) | sei(); } void nadajznak(char...
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> int main() { int k; float x,w; char* imie[100]; int strlen (char *str); printf("Podaj swoje imie \n"); scanf("%s", &imie); printf("Podaj liczbę calkowita k \n"); scanf("%i", &k); printf("Podaj liczbe rzeczywista \n"); scanf("%f", &x); if...
Dlaczego kompilator zgłasza uwagi? Jakie? Jak to powinno się zapisać? sprintf(UART, "wynik = %" PRIu32, zmienna); Zmiennych typu uint32_t, int8_t i w ogóle wszystkich z nagłówka stdint.h _NIE_ powinno się wyświetlać przez specyfikatory proste takie jak %lu czy %hhd, tylko należy zawsze używać odpowiednich makr z nagłówka inttypes.h...
tak wiem: string -> char, count->printf, cin->scanf. nie potrafie wlasnie sprzerobic tej funkcji substr.... bardzo pilnie potrzebuje zeby taki algorytm skompilowal mi sie w C... ale wyskakuja mi bledy roznego typu. np przy generowniu lancucha. zasatnawiam sie czy dobrym rozwiazaniem byloby wprowadzenie to na sztywno tablicy znakow wtedy moze bez problmu...
program ma wczytywac tekst z klawiatury i zamienic na kod ascii. Gdy wypisujemy tablice z kodem, wypisuje nam tylko do pierwszej spacji. trzeba jakos zastrzec sprawdzenie nastepnego znaku przy wczytywaniu stringa, ale nie wiem jak:( PS. pram ma być napisany w języku C lub c++ kod: ----------------------------------------...
Siemka, mam na wstep do programowania zrobic aplikacje okienkową w Lazarusie, która zamienia liczby dziesiętne na system dwójkowy, szesnastkowy i ósemkowy. Na razie napisałem zwykłą konsolową aplikacje w C, bo go lepiej ogarniam i próbuje to zmienić na Pascala. Tu program w C: A tu pascal z tym że nie do końca działa także prosiłbym o poprawe: program...
Proszę o pomoc, bo nie rozumiem dlaczego kompilator zwraca błędy. W programie tworzę strukturę, która zawiera tablicę struktur. Innymi słowami: [syntax=cpp]Struktura 1 { element1; element2; }[/syntax] [syntax=cpp]Struktura2 { wskaźnik do tablicy, która zawiera struktury 1 }[/syntax] W programie głównym tworzę wskaźnik do struktury2 i przydzielam mu...
printf scanf klawiatura scanf scanf spacja
mercedes kontrolka radio kondensator trzeszcz blaupunkt uderzenia
dobre sklepy elektroniczne online dobre sklepy elektroniczne
Sonoff nie wysyła temperatury na serwer - przyczyny Wymiary pasków do Technics RS-EH600