NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze – Lekce 8 - Textové řetězce v jazyce C

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
David Švec
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
David Švec:18.7.2017 15:19

aha díky, zkusím to nějak nastudovat :)

 
Odpovědět
18.7.2017 15:19
Avatar
David Švec
Člen
Avatar
David Švec:18.7.2017 16:22

scanf(" %50[^\n]s", jmeno);
mohl by mi někdo vysvětlit tento řádek kódu?
myslím proč je před % mezera a proč tam je [^\n] ? děkuji

 
Odpovědět
18.7.2017 16:22
Avatar
Odpovídá na David Švec
Libor Šimo (libcosenior):18.7.2017 16:31

Medzera je na to, aby sa tzv. zahodil predchadzajuci ENTER.
\n ze zadavanie je ukoncene klavesou ENTER.

Odpovědět
18.7.2017 16:31
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Švec
Člen
Avatar
 
Odpovědět
18.7.2017 16:48
Avatar
Student C
Člen
Avatar
Student C:31.3.2018 10:27

/************­************************­************************­*****************

  • jarvis program (komunikator) verze 0.0.1 *
  • program za učelem zakladny komunikace s počitacem skrz jeden program *

*============­========================­========================­=================

  • vytvořil: Timoteus kupec datum: 30.3.2018 *

*************­************************­************************­****************/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#include "jarvis.h"

int main(){

///struktury zakladních vìci pro progrm

struct udaje{
int it_is_you;
char jmeno[50];
char primeni[50];
char rok[156];
char weight[156];
char height[156];
}zakladni;

struct udaje2{
char jmeno2[50];
char primeni2[50];
char rok2[156];
char weight2[156];
char height2[156];
}zakladni2;

struct question{
char otazka001[500];
char odpoved001[500];
char for_read001[500][5­00];
char for_read002[500][5­00];
char for_write[500][500];
char systemova_pro­mena[500];
char nacteni_z_obr_co­mand[500];
}question1;

struct opakovani{
int opacko_programu;
int cikus_pro_naci­tani_ze_soubo­ru1;
}opakovani1;

opakovani1.opac­ko_programu=1;
///deklarace souborù

FILE txt1,txt_name_co­mand,*txt_coman­d;

jarvis_nadpis();

printf("it is you?if is you write 1!\n");
scanf("%i", &zakladni.it_is_y­ou);

if(zakladni.it_is_y­ou!=1){

txt1=fopen("jar­vis udaje tech.txt","w");

if(txt1==NULL){
printf("File don't opening.\n");
exit(1);
}

///nacitani udaju
printf("\nWrite your name.\n");
scanf("\n%[^\n]s", zakladni.jmeno);
getchar();
fprintf(txt1,"%s;­", zakladni.jmeno);
printf("Write your surname.\n");
scanf("%[^\n]s", zakladni.primeni);
getchar();
fprintf(txt1,"%s;­", zakladni.primeni);
printf("Write your age\n");
scanf("%s", zakladni.rok);
getchar();
fprintf(txt1,"%s;­", zakladni.rok);
printf("Write your weight in kg.\n");
scanf("%s", zakladni.weight);
getchar();
fprintf(txt1,"%s;­", zakladni.weight);
printf("Write your height in cm.\n");
scanf("%s", zakladni.height);
getchar();
fprintf(txt1,"%s;­", zakladni.height);

fclose(txt1);
}

txt1=fopen("jar­vis udaje tech.txt","r");

if(txt1==NULL){
printf("File don't opening.\n");
exit(1);
}

///tisknuti udaju z txt
fscanf(txt1,"%[^;­]s", zakladni2.jme­no2);
fscanf(txt1,";%[^­;]s", zakladni2.pri­meni2);
fscanf(txt1,";%[^­;]s", zakladni2.rok2);
fscanf(txt1,";%[^­;]s", zakladni2.weig­ht2);
fscanf(txt1,";%[^­;]s", zakladni2.heig­ht2);

system("cls");
jarvis_nadpis();
printf("\n\tHello %s, what can you do?\n",zaklad­ni2.jmeno2);

fclose(txt1);

do{do{

scanf("%[^\n]s", question1.otaz­ka001);
getchar();

txt_name_coman­d=fopen("name of comand.txt","r");
if(txt_name_co­mand==NULL){
printf("File don't opening(name of comand).\n");
exit(1);
}

for(opakovani.cikus_pro_na­citani_ze_sou­boru1=0; opakovani1.ci­kus_pro_nacita­ni_ze_souboru1<=500; opakovani1.ci­kus_pro_nacita­ni_ze_souboru1++){
fscanf(txt_na­me_comand,";%[^;]s", question1.for_re­ad001[opakova­ni1.cikus_pro_na­citani_ze_sou­boru1]);
}
fclose(txt_na­me_comand);

txt_comand=fo­pen("comand with name.txt","r");
if(txt_comand==NUL­L){
printf("File don't opening(comand with name).\n");
exit(1);
}
for(opakovani.cikus_pro_na­citani_ze_sou­boru1=0; opakovani1.ci­kus_pro_nacita­ni_ze_souboru1<=500; opakovani1.ci­kus_pro_nacita­ni_ze_souboru1++){
fscanf(txt_co­mand,";%[^;]s", question1.for_re­ad002[opakova­ni1.cikus_pro_na­citani_ze_sou­boru1]);
}
fclose(txt_comand);

for(question.for_read001; question1.for_re­ad001[opakova­ni1.cikus_pro_na­citani_ze_sou­boru1]!=questi­on1.otazka001; opakovani1.ci­kus_pro_nacita­ni_ze_souboru1++){
strcpy(questi­on1.systemova_pro­mena,question.for_read002[o­pakovani1.cikus_pro_na­citani_ze_sou­boru1]);
}

system("cls");
jarvis_nadpis();

if(strcmp(ques­tion1.otazka001,"stu­dents book")==0){
jarvis_znamky_va­zene();
}

if(strcmp(ques­tion1.otazka001,"e­xit")==0){
jarvis_vypnuti_pro­gramu();
}

}while(strcmp(qu­estion1.syste­mova_promena,";")<0&&s­trcmp(question.systemova_pro­mena,";")>0&&s­trcmp(question.otazka001,"stu­dents book")==0);

printf("I don't know what it means.\nPlease writ what you can.");
scanf("%[^\n]s", question1.nac­teni_z_obr_co­mand);
getchar();

txt_comand=fo­pen("name of comand.txt","a");
fprintf(txt_co­mand,"%s;", question1.nac­teni_z_obr_co­mand);
fclose(txt_comand);

}while(opakova­ni1.opacko_pro­gramu==1);

getchar();
return 0;
}
pomůžete mi dělal jsem to podle toho co znám a naučil jsem se tady ale sekne se to během chvilky
co s tím mam dělat pls pomoc už nad tím přemýšlím měsíc a vymyslel jsem todle ale nefunguje to a seká se to .!!!
program má vedlejší hlavičkový soubor který obsahuje (kalkulačku apod....)
program má dělat tzv siri píšu a on pote bude brát do systému a zapínat či otevírat
a pod.... tak poradíte??????????­????????????????????????­????????

Odpovědět
31.3.2018 10:27
Cree que puedes manejarlo
Avatar
Student C
Člen
Avatar
Student C:31.3.2018 10:35

pro srozumitelnost přikládám knihovnu a pzn....(prace je delana v code::block)

/************­************************­***************

  • knihovna pro program jarvis verze 0.0.1 *

=============­========================­=============

  • vytvoøil: Timoteus Kupec datum: 30.3.2018 *

*************­************************­**************/

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

///funkce nadpisu

void jarvis_nadpis(){
printf("\t\t\t\t * \n");
printf("\t\t\t\t * * **** * * **** \n");
printf("\t\t\t\t * * * * * * * * * \n");
printf("\t\t\t\t * * * **** * * * *** \n");
printf("\t\t\t\t* * ******* * * * * * *\n");
printf("\t\t\t\t ** * * * * * * **** \n");
printf("********­************************­************************­************************­************************­****************\n");

}

///funkce vženeho prumeru znamek se zaokrouhlenim na konci.

void jarvis_znamky_va­zene(){
int y,n,m;
float x,z[100],a[10­0],delenec,de­litel;
printf("Write, how many marks you're going to type:\n");
scanf("%f", &x);
getchar();
for(y=1; y<=x; y++){
printf("\nWrite your mark:");
scanf("%f", &z[y]);
if(z[y]>=6){
printf("This mark does not exist.\nEnding please wait 10 seconds because you are idiot.");
Sleep(1000*10);
exit(1);
}
getchar();
printf("Write value of the mark:");
scanf("%f",&a[y]);
if(z[y]>=11){
printf("This value does not exist.\nEnding please wait 10 seconds because you are idiot.");
Sleep(1000*10);
exit(1);
}
getchar();
}
for(n=1; n<=x; n++){
delitel=delitel+a[n];
}
for(m=1; m<=x; m++){
delenec=delenec+a[m]*z[m­];
}
printf("\n\n\tThe mark you're searching for is %.2f, so it will be %.0f\n\n", delenec/delitel, delenec/delitel);
getchar();
}

///funkce vypnuti programu

void jarvis_vypnuti_pro­gramu(){
printf("Ending, pleas wait 10 seconds.");
Sleep(1000*10);///u funkce sleep se do argumenu pisi sekundy/1000
exit(1);
}

///zde puijdou dalši funkce:):):)

Odpovědět
31.3.2018 10:35
Cree que puedes manejarlo
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Student C
DarkCoder:31.3.2018 13:20

Asi Tě má slova nepotěší, ale po shlédnutí kódu bych to celé smazal a začal znovu. Je tam špatně snad úplně vše.

Pokud chceš aby Ti kdokoli pomohl, založ nové vlákno v dané kategorii a dodržuj pravidla pro vložení příspěvku.
PRAVIDLA VLOZENI PRISPEVKU

Dvě rady na závěr, jak se dobereš vytouženého cíle:

  1. Postupuj systematicky a nepokračuj v něčem novém, dokud daný problém nevyřešíš.
  2. Zapracuj na písemném projevu, i sebelepší aplikaci zazdíš tím jak ji prezentuješ
Odpovědět
31.3.2018 13:20
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Student C
Člen
Avatar
Odpovídá na DarkCoder
Student C:31.3.2018 17:43

no dik

Odpovědět
31.3.2018 17:43
Cree que puedes manejarlo
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Student C
DarkCoder:31.3.2018 18:37

Abych byl více konkrétní a věděl si co je v programu chybně:

Např.:

  • používání void, pokud funkce nemá parametry
  • struktury deklaruj vně funkce
  • proměnné typu struktura definuj uvnitř funkce
  • používej typy které lépe korespondují s daným prvekm struktury
  • deklarace proměnných se v C provádí na začátku bloku
  • pro práci se soubory deklaruj ukazatel na FILE
  • pracuj s funkcemi, zpřehlední Ti to program
  • pro řetězce používej fgets()
  • nehledej ve scanf() složitosti
  • používej kratší identifikátory pro proměnné
  • v operacích se soubory vždy testuj na úspěšnost

Nic však z toho co jsem uvedl není složité.

Editováno 31.3.2018 18:37
Odpovědět
31.3.2018 18:37
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Student C
Člen
Avatar
Odpovídá na DarkCoder
Student C:31.3.2018 18:45

dík
já jsem začátečník já se algoritmy teprv učím.

Odpovědět
31.3.2018 18:45
Cree que puedes manejarlo
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 48.