przysylanie argumentow do funkcji

0

Witam!
przerzucilem sie z Code Blocka na Visual Studio bo wykladowca ode mnie tego wymaga i musze przepisac kod.
Napotkalem taki problem w VS.
Podstawowy program na stringach
to jest wycinek kodu, wczesniej jest char tekst[500]

 case '3':
              system("cls");
              printf("\nJakiej litery szukamy? ");
              znak = getch();
              znakow = ilosc_litera(tekst, znak);
              printf("\nIlosc powtorzen litery: '%c' w zdaniu:  %d", znak, znakow);
              _getch();
              break;

dodam moze caly projekt w VS
http://wyslijplik.pl/download.php?sid=wVbM9WHq

#include "stdafx.h"
#include "header.h"

int ilosc_litera(char *p, char z)
{
int s=0;
while(*p!='\0')
{
if(*p==z) s++;
*p++;
}
return s;
}

wywala blad "function does not take 2 arguments"

0

Źle dzielisz moduły. Plików ".c" się nie includuje. Powinieneś utworzyć plik "ilosc_litera.h" o takiej zawartości:

#ifndef ILOSC_LITERA_H

int ilosc_litera(char *p, char z);

#endif /* ILOSC_LITERA_H */

i includować właśnie ten plik ".h" zamiast pliku ".c". Podobnie dla pozostałych modułów.
Nie mam Visuala pod ręką ale prawdopodobnie zgłupiał z powodu powyższego.

Również idea pliku nagłówkowego "header.h", który ma za zadanie includować "wszystko" jest zła. Powinieneś każdy poszczególny plik nagłówkowy includować w pliku "main.c".

No i za bardzo się rozdrabniasz na moduły.

0

ok wielkie dzieki za cenne wskazowki, co do rozdrabiania to tez jestem tego zdania ze to troche bezsensu ale jak na zajeciach zwrocilem na to uwage to profesor powiedzial zeby nie dysktutowal :) wiec ok, chcial to ma :]

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