Anonymní profil Sprinter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Sprinter – Programujte.comAnonymní profil Sprinter – Programujte.com

 

Příspěvky odeslané z IP adresy 81.90.168.–

Sprinter
C / C++ › Problém s funkcí strcat()
13. 1. 2013   #170132

Ahoj,

používám funkci strcat() pro kopírování jednotlivých "slov" do výsledného pole. Problém ale nastane, pokud je těchto slov více, jak dvě - funkce strcat() totiž dané slovo "ořeže" o poslední znak a do výsledného pole nakopíruje o jeden tento znak z posledního slova míň (jak je vidět na obrázku níže, znak mezery se prostě už nezkopíruje).

Úsek kódu, kde používám funkci strcat() je níže.

			first_nonterminal[iter] = ' ';
			first_nonterminal[iter + 1] = '\0';
			printf("Vypis: {%s}{%c}{%c}\n", first_nonterminal, first_nonterminal[iter], first_nonterminal[iter+1]);
			strcat(f_set, first_nonterminal);
		}
	}
	printf("Mnozina: {%s}\n", f_set);
Sprinter
C / C++ › Uložení čísla do matice podl…
28. 12. 2012   #169504

Zkusil jsem to přepsat do mého zdrojáku a fungovalo to pouze, když jsem tam neměl plnění pro nadpisový řádek a sloupec (v podstatě je tam teď o jeden řád větší matice).. Nemůžu přijít co v tom vašem kodu upravit, aby fungoval respektoval tu zvětšenou matici... nevěděl byste?

void create_table (char* orig_line, char* orig_column, char* line, char* column)
{
	int a = strlen(line);
	int b = strlen(column);
	char matrix [a+1] [b+1];
	
	/* Inicializace matice */
	int n;
	for (n = 0; n <= a; n++)
	{
		int m;
		for (m = 0; m <= b; m++)
		{
			matrix [n] [m] = ' ';
		}
	}
	matrix [0] [0] = 'M';
	
	/* Naplneni matice znaky pro nadpisovy sloupec v tabulce */
	int e;
	for (e = 0; e < a; e++)
	{
		matrix [e+1] [0] = line[e];
	}
	
	/* Naplneni matice znaky pro nadpisovy radek v tabulce */
	int f;
	for (f = 0; f < b; f++)
	{
		matrix [0] [f+1] = column[f];
	}
	
	/* Naplneni matice ciselnymi hodnotami dle danych souradnic */
	int iter;
	for (iter = 0; orig_line[iter] != '\0' && orig_column[iter] != '\0'; iter++)
	{
		matrix [get_index(line, orig_line[iter])] [get_index(column, orig_column[iter])] = (iter + 1);
	}
	
	/* Vypsani rozkladove tabulky (matice) */
	printf("Tabulka:\n");
	int x;
	for (x = 0; x <= a; x++)
	{
		int y;
		for (y = 0; y <= b; y++)
		{
			printf("%c   ", matrix [x] [y]);
		}
		printf("\n");
	}
}


unsigned get_index (const char* str, char c)
{
	for (unsigned i = 0; str[i] != '\0'; i++)
	{
		if (str[i] == c)
		{
			return i;
		}
	}
	assert(0 && "Chyba v get_index");
}
Sprinter
C / C++ › Funkce strstr()
26. 12. 2012   #169392

Chtěl bych se zeptat, mám problém při překladu následujícího useku kódu. Přesněji u fce strstr() - je možné zapsat druhý parametr i takto, než klasicky pouze s přímo hledaným znakem (př.strstr(pole, "R")).

int j;
	char dup_line_buffer [strlen(line_buffer)];
	for (j = 0; j < strlen(line_buffer); j++)
	{
		if (strstr(line_buffer, line_buffer[j]) != NULL)
		{
			dup_line_buffer[j] = line_buffer[j];
		}
	}
Sprinter
C / C++ › Chybné znaky v poli
26. 12. 2012   #169389

#7 zlz
Pravda, už to funguje, nevšiml jsem si toho. Děkuji

Sprinter
C / C++ › Odstranění znaků z pole
26. 12. 2012   #169388

#2 zlz

No tohle chápu, ale tímto způsobem právě dojde k chybě - pokud totiž podmínka neproběhne, do pole se neuloží nic.. stane se pak, že budu mít pole o (A, B, ?, C, ?)... kde otazník bude nějaký nevyžádaný znak.. např. i ukončovací a to mi může způsobit i ukončení řetězce - pole..

 

 

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