Prehodenie slov v reťazci – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Prehodenie slov v reťazci – C / C++ – Fórum – Programujte.comPrehodenie slov v reťazci – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
street punk+1
Návštěvník
29. 1. 2012   #1
-
0
-

Potreboval by som, aby mi niekto vysvetlil ako je to stým nulovým znakom. Spravil som si náhodný program, napríklad pre prehodenie slov v reťazci

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

#define max 30

int nacitanie_pole(char pole[]);
void prehodenie(char pole[], int dlzka);
void vypis_pola(char pole[], int dlzka);

int main()
{
	char pole[max];
	int velkost;

	velkost = nacitanie_pole(pole);
	prehodenie(pole, velkost);
	vypis_pola(pole, velkost);
	putchar('\n');
	system("pause");
	return 0;
}

int nacitanie_pole(char pole[])
{
	int i;
	char pom;

	for(i = 0; i < max - 1; i++)
	{
		pom = getchar();
		if(pom == '\n')
			break;
		pole[i] = pom;
	}
	pole[i++] = '\0';
	return i;
}

void prehodenie(char pole[], int dlzka)
{
	char pom;
	int j;
	for(int i = 0, 	j = dlzka - 1; i < j; i++, j--)
	{
		pom = pole[i];
		pole[i] = pole[j];
		pole[j] = pom;
	}
}

void vypis_pola(char pole[], int dlzka)
{
	for(int i = 0; i < dlzka; i++)
		putchar(pole[i]);
}

Napríklad keď napíšem macka, tak mi vyhodí (neidentifikovaný znak)akca

Keď to zmením takto  

for(int i = 0, 	j = dlzka - 1; i < j; i++, j--)

Tak vypis je uz (medzera)ackam

A až keď dám dlzka - 2, tak potom je výpis správne

 

Nahlásit jako SPAM
IP: 188.112.122.–
Reklama
Reklama
devilfish0
Stálý člen
29. 1. 2012   #2
-
0
-

Chyba je v funkcii nacitania pola

pole[i++] = '\0';

Inkrementujes icko a teda vratis hodnotu o jednu vacsiu ako je dlzka retazca, znak konca retazcu nemozes ratat do velkosti

Nahlásit jako SPAM
IP: 188.121.172.–
street punk+1
Návštěvník
29. 1. 2012   #3
-
0
-

Aha. Díky. Takže potom má byť správne dlzka - 1, aby mi neprehadzovalo aj ten nulový znak

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

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ý