Uruchamianie z argumentem

0

Witam ponownie; ) tym razem problem jest dość dziwny, przynajmniej dla mnie. Program ma odczytywać informacje z pliku który jest podany jako argument. Takie coś robiłem już wielokrotnie, dlatego nie wiem czemu teraz to nie działa.

 int main(int argc, char *argv[]) {

	char* tab[10];
	char* imie_max;
	int z, bonus, max, suma, l_osoby;
	float srednia, licznik;
	FILE* plik;
	char* tekst;
	tekst = (char*) malloc(sizeof(char));
	char *n;

	z = 0;
	l_osoby = 0;
	j = 0;
	plik = fopen(argv[1], "r");
	while (feof(plik) == false) {
		i = 0;

		n = fgets(tekst, 100, plik);
		///printf("%s\n",tekst);

		char* k = tekst;
		while (k != NULL) {
			char* l = strchr(k + 1, '	');
			if (l != NULL)
				*l = '\0';

			////cout << k << endl;

			bonus = strlen(k);

			if (k[bonus - 1] == '\n')
				k[bonus - 1] = '\0';

			tab[i] = k;

			i = i + 1;
			if (l != NULL)
				k = l + 1;
			else
				k = NULL;
		}

To jest fragment kodu który ma odpalać dany plik. Kiedy zamiast argv[1] wpisze nazwę pliku to śmiga, a jak jest tak jak podałem wyżej to wyskakuje, że program przestał działać;/ Oczywiście w kompilatorze ustawiłem uruchamianie z argumentem. Bardzo bym prosił o pomoc.

1

Zapoznaj się z dynamicznym przydzielaniem pamięci bądź go nie używaj.
tekst = (char*) malloc(sizeof(char)); - przydzielasz na 1 znak
n = fgets(tekst, 100, plik); - używasz na 101 znaków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1