#include <iostream>
//const char *s jest równoważne z const char s[]
int string_length(const char * s)
{
//size_t to specjalny typ do liczenia wielkości
std::size_t i{};
//Sprawdź czy pointer s nie jest pusty
if(s){
//Pobierz znak z tablicy z pozycji "i" i porównaj ze znakiem '\0'
//jeśli są różne to wykonaj ciało funkcji(zinkrementuj licznik)
while(s[i] != '\0'){
i++;
}
//operator [] oblicza adres o "i" wielkości char (w bajtach) dalej licząc od adresu "s" i dokonuje dereferencji
}
//Zwróć wartość licznika przez wartość
return i;
}
int main(int argc, char** argv)
{
//argc zawiera liczbę argumentów, argv jest jak tablica dwuwymiarowa typu char
for(int i{int()}; i<argc; ++i)
{
//argv[i] pobiera wskaźnik na pierwszy znak/początek/adres kolejnych tablic znaków
//tablice znaków stosowane w C zawierają(powinny zawierać) na końcu specjalny znak '\0' tzw. delimiter albo NULL character
//Warto zwrócić uwagę, że operator << automatycznie rozpozna odpowiednie przeciązenie operatora i wypisze string w formacie C
std::cout << '[' << i << "] = " << argv[i] << "; length =" << string_length(argv[i]) << '\n';
}
return 0;
}
Zadanie bardzo proste, wystarczy tylko poszukać w internecie informacji na temat zagadnień jakie ono porusza.
Wyjście programu:
[0] = (...).exe; length =69 //ścieżka do pliku wykonywalnego, zależne od systemu operacyjnego
[1] = test1; length =5
[2] = test2; length =5
[3] = test3; length =5
[4] = test4; length =5
[5] = abcd; length =4
[6] = 1234; length =4
[7] = aaaa; length =4
[8] = bbb; length =3
[9] = cc; length =2
[10] = d; length =1