Wątek przeniesiony 2019-01-02 09:08 z Newbie przez Adam Boduch.

Napisanie funkcji o takim samym działaniu jak strlen

0

Siemka, mam za zadanie napisac funkcje o takim samym rozmiarze co strlen, doszedłem jednak do czegoś takiego, funkcja nie pokazuje dobrej wartosci (zawsze daje 22) znakow, gdzie lezy mój błąd:

#include <iostream>
using namespace std;

int licznik(char wyrazy[]){
    int licznik=0;
    if(wyrazy[0]=='\0') return licznik;
    for(int i=0; i<sizeof(wyrazy);i++){
        if((wyrazy[i]!='\0')){
            licznik++;
            wyrazy[i++];
        }
        else if(wyrazy[i]==' ')wyrazy[i++];
    }

    return licznik;
}
int main()
{
    char zdanie[81];
    cout<<"Podaj jakies zdanie: ";
    cin.getline(zdanie, sizeof(zdanie));
    cout<<"Twoje zdanie: "<<zdanie<<endl;
    cout<<"Ilosc znakow w twoim zdaniu: "<<licznik(zdanie);
    cout<<licznik(zdanie);
    return 0;
}
0

sprawdź co robi operator sizeof() ponieważ używasz go niepoprawnie.

2

Nie dziwne, że nie działa, po co tam tyle kodu.

#include<iostream>
 
using namespace std;

int licznik(char wyrazy[]){
    int licznik = 0;
    while (*wyrazy++)
       licznik++;
	return licznik;
}
 
int main(){
	char a [] = "I have a length 18";
	cout << licznik(a) << "\n";
    return(0);
}

EDIT: W warunku: * najpierw wykonuje dereferencję (sprawdza co jest w pierwszym elemencie tablicy), następnie++ inkrementuje wskażnik na następny wyraz i pętla zaczyna działać. Albo string jest pusty i zwróci zero.

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