C - funkcia nechce vypisat pismeno – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

C - funkcia nechce vypisat pismeno – C / C++ – Fórum – Programujte.comC - funkcia nechce vypisat pismeno – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Truth
~ Anonymní uživatel
13 příspěvků
21. 11. 2015   #1
-
0
-

Zdravim,zacinam v C,chcem sa spytat preco mi nasledujuci program nevypisuje "pismeno". Skusal som uz aj bez pointerov,taktiez neuspesne.Kazdopadne dakujem za opravu a trosku vysvetlenia ze preco :-))

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

void jeVStringu(char *pole,size_t velkost,char *pismeno);

int
    main()
{
  char *pol;
  char pismeno;

  scanf("%s",pol);
  scanf("%c",&pismeno);
  size_t velkost=strlen(pol);

  jeVStringu(pol,velkost,&pismeno);
  return 0;
}
void jeVStringu(char *pole,size_t velkost,char *pismeno){
    int i;

    for (i=0;i<=velkost;i++){
        printf("%c // %c\n",*pismeno,pole[i]);
        }
    }
Nahlásit jako SPAM
IP: 78.98.1.–
Reklama
Reklama
Truth
~ Anonymní uživatel
13 příspěvků
21. 11. 2015   #2
-
0
-

Tu je v podstate to iste akurat lahsie a s tym ,ze neukladam to slovo co zadava uzivatel :  

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

int
    main()
{
  char slovo;
  char pismeno;
  scanf("%c",&pismeno);
  
  while ((slovo=getchar())){
    if (slovo==pismeno){printf("%c sa nachadza v tvojom slove",pismeno);break;}
  }
 return 0;
}

Ale preco hento nefunguje stale neviem :-)

Nahlásit jako SPAM
IP: 78.98.1.–
KIIV+42
God of flame
21. 11. 2015   #3
-
0
-

Slovo nacitas kdo vi kam - mas tam jen neinicializovany pointer pol, ktery pak pouzivas.

A taky %c ti pak nacte prvni znak v bufferu (mezera nebo enter):

  scanf("%s",pol);
  scanf(" %c",&pismeno); // s tou mezerou pred %c to zahodi znaky, co neches

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Truth
~ Anonymní uživatel
13 příspěvků
21. 11. 2015   #4
-
0
-

Tam bude problem ,ze takto to zobere tu medzeru,ale ked to vymenim  

scanf("%c",&pismeno);
scanf("%s",pol);

tak to bez problemov funguje,ako to nacitam opacne aby to fungovalo spravne? ...co je zle na tom pointri? :-)

Nahlásit jako SPAM
IP: 78.98.1.–
KIIV+42
God of flame
21. 11. 2015   #5
-
0
-

#4 Truth
char *pol;
Je jen pointer a neukazuje na platna data. Pokud to nepada, tak neco musis prepisovat. Bud musis vytvorit buffer, nebo pouzit rovnou pole znaku, jako buffer -  char pol[50];

Ale i tak hrozi, ze ti tam nejakej dobrak proste zada slovo delsi a bude ti prepisovat pamet.

A otoceni funguje, protoze %s nacita jen jedno slovo a zbavuje se neviditelnych znaku. Nacteni znaku to delat nemuze, tam pak musis dat pred %c mezeru, aby se zbavilo neviditelnych znaku.

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Truth
~ Anonymní uživatel
13 příspěvků
21. 11. 2015   #6
-
0
-

Takze je to v podstate zle hentak pouzivat? :-)) tak tam uz by som pouzil aj dynamicke alokovanie ..

Nahlásit jako SPAM
IP: 78.98.1.–
KIIV+42
God of flame
21. 11. 2015   #7
-
+1
-
Zajímavé

#6 Truth
je to jedno jestli staticky buffer nebo dynamicky alokovany. Dulezite je, aby to byla platna pamet.

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 82 hostů

Podobná vlákna

Funkcia vypisať vysledok — založil Zelenac14

Nechce mi to skompilovat — založil Filip

Nechce zobraziť kód — založil ivan

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý