C String input – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C String input – C / C++ – Fórum – Programujte.comC String input – C / C++ – Fórum – Programujte.com

 

Poki
~ Anonymní uživatel
29 příspěvků
25. 9. 2015   #1
-
0
-

Zdravim,s Cckom mam zatial minimalne skusenosti a chcel by som spravit simple program ze uzivatel zada 2x heslo a chcem ich vlastne skontrolovat ze ci su rovnake.Jedinym problemom je pre mna nacitat vstup. Zatial mam len vstup ,zbytok je malickost. Tento kod mi funguje neviem preco len pre stringy mensie ako 3 pismena.Skusal som to aj cez polia ale nejako mi to neslo,tak som sa skusil pohrat s pointrami.dakujem za rady :))

#include <stdio.h>
#include <string.h>
int main() {

  char *heslo;
  char *potvrd;
  int rovnajuSa=-1;
  scanf("%s",&heslo);

  scanf("%s",&potvrd);

  if (strcmp(&heslo,&potvrd)==0){
    printf("Rovnaju sa");

  }
}
Nahlásit jako SPAM
IP: 78.98.18.–
BDS+3
Věrný člen
25. 9. 2015   #2
-
0
-

#1 Poki
nejsem sice odborník na C, ale přesto mi to nedá:

#include <stdio.h>
#include <string.h>
int main()
{

  char heslo[64];     //chyba: "char *heslo" je pouze ukazatel -> takto neinicializovaný ukazuje bůh ví kam
  char potvrd[64];    // -||- (delku 64 jsem použil náhodně - mělo by být v kodu pak zajisteno aby nedoslo k zapisu mimo velikost pole
  //int rovnajuSa=-1; //nepoužito
  scanf("%s", heslo); // &heslo ->ukazatel na ukazatel, toto funkce scanf nepotřebuje

  scanf("%s", potvrd);

  if (strcmp(heslo,potvrd)==0)
  {
	  printf("Rovnaju sa");
  }

}
Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
Poki
~ Anonymní uživatel
29 příspěvků
25. 9. 2015   #3
-
0
-

Ta premenna tam samozrejme byt nedala,asi som ju pouzival predtym ...aj sami to zdalo divne ze tie pointre na co ukazauju :P ale kazdopadne dik :))

Nahlásit jako SPAM
IP: 78.98.18.–
Poki
~ Anonymní uživatel
29 příspěvků
25. 9. 2015   #4
-
0
-

Okej,trosku som to prerobil,avsak vyskytol sa mi jeden problem s outputom. 

#include <stdio.h>
#include <string.h>
#define MAX_SIZE 64
int main()
{
  char password[MAX_SIZE];     
  char confirm[MAX_SIZE];    
  fgets(password,MAX_SIZE,stdin);
  fgets(confirm,MAX_SIZE,stdin);


  if(strcmp(password,confirm)==0){
    printf("\n");
    printf("%s is equal to %s",password,confirm);
  }
}

INPUT:
ahoj
ahoj
OUTPUT:
ahoj
 is equal to ahoj

Neviete niekto co s tym?Dakujem

Nahlásit jako SPAM
IP: 78.98.18.–
BDS+3
Věrný člen
25. 9. 2015   #5
-
0
-

   

//---------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 64
int main()
{
  char password[MAX_SIZE];
  char confirm[MAX_SIZE];
  char *ptr;
  fgets(password,MAX_SIZE,stdin);
  fgets(confirm,MAX_SIZE,stdin);


  if(strcmp(password,confirm)==0)
  {
	if( (ptr = strchr(password, '\n')) != NULL)*ptr = '\0';
	if( (ptr = strchr(confirm, '\n')) != NULL)*ptr = '\0';
	printf("\n");
	printf("%s is equal to %s",password,confirm);
  }

  getchar();
  return 0;
}
Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
Poki
~ Anonymní uživatel
29 příspěvků
25. 9. 2015   #6
-
0
-

Nerozumiem ze co tam vlastne robis s tym ukazovatelom :)

Nahlásit jako SPAM
IP: 78.98.18.–
BDS+3
Věrný člen
25. 9. 2015   #7
-
0
-

#6 Poki
takto to asi lépe pochopíš:

#include <stdio.h>
#include <string.h>
#define MAX_SIZE 64
int main()
{
  char password[MAX_SIZE];
  char confirm[MAX_SIZE];
  char *ptr;
  fgets(password,MAX_SIZE,stdin);
  fgets(confirm,MAX_SIZE,stdin);


  if(strcmp(password,confirm)==0)
  {
	ptr = strchr(password, '\n');
	if( ptr != NULL) *ptr = '\0';

	ptr = strchr(confirm, '\n');
	if( ptr != NULL)*ptr = '\0';

	printf("\n%s is equal to %s",password,confirm);
  }

  getchar();
  return 0;
}

*ptr = '\0'; je ekvivalent ptr[0] =  '\0';

Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
BDS+3
Věrný člen
25. 9. 2015   #8
-
0
-

strchr(password, '\n'); funkce vrací ukazatel na první výskyt \n, pokud nic nenajde vrací NULL

Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
Poki
~ Anonymní uživatel
29 příspěvků
25. 9. 2015   #9
-
0
-

A preco to mojevlastne nefunguje?  

Nahlásit jako SPAM
IP: 78.98.18.–
BDS+3
Věrný člen
25. 9. 2015   #10
-
0
-

#9 Poki
funguje, ale funkce fgets zapíše i ten potvrzovací enter

Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
Poki
~ Anonymní uživatel
29 příspěvků
25. 9. 2015   #11
-
0
-

Aha a ty vlastne namiesto toho enteru zapises "null character" aka "\0" ,tak? :)

Nahlásit jako SPAM
IP: 78.98.18.–
BDS+3
Věrný člen
25. 9. 2015   #12
-
0
-

#11 Poki
presne tak

Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
Poki
~ Anonymní uživatel
29 příspěvků
25. 9. 2015   #13
-
0
-

Jasne,chapem,diky moc :)

Nahlásit jako SPAM
IP: 78.98.18.–
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, 20 hostů

Podobná vlákna

Input a input type — založil

String to hex ebo Byte()"string" — založil Roman Uherek

Input — založil homelin

Input v Js — založil milanmichal

Moderátoři diskuze

 

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