• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed niedodawanie daty na początku pliku mimo wywołania programu z argumentem "d", który to włącza

Object Storage Arubacloud
0 głosów
202 wizyt
pytanie zadane 10 lutego 2021 w C i C++ przez toko Dyskutant (7,670 p.)
zamknięte 10 lutego 2021 przez toko
#include <iostream>
#include <fstream>
#include <ctime>

using namespace std;

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

        fstream plik;
        time_t czas;
        bool t = false;
        string nazwa = "plik.txt";

        for (int x = 0; x < argc; x++) {
                if (argv[x] == "d") {
                        t = true;
                }
        }

        plik.open(nazwa, ios::app);
        if (plik.good() && t) {
                time(& czas);
                plik << ctime(& czas);
        }
        plik.close();

        (...)
}

Witam, 

napisałem taki program, który pozwala edytować plik, a to z niego kawałek, w którym jest gdzieś błąd, ale ja nie wiem gdzie. Chodzi o to, że jeśli program zostanie uruchomiony z argumentem "d" to ma dodać aktualną datę na początek pliku, w przeciwnym razie ma tego nie robić. Natomiast mój program nigdy nie dodaje daty. Dlaczego?

Próbowałem czy to nie jest coś z datą np. z time() lub ctime(), ale nie. Po zmienieniu bool t = false na bool t = true dodaje datę, więc chyba problem jest w sprawdzaniu argumentów.

komentarz zamknięcia: dostałem odpowiedź

2 odpowiedzi

0 głosów
odpowiedź 10 lutego 2021 przez tkz Nałogowiec (42,000 p.)
wybrane 10 lutego 2021 przez toko
 
Najlepsza
 if (*argv[x] == 'd')

argv jest tablica wskaźników. Stąd dereferencja. 

komentarz 10 lutego 2021 przez toko Dyskutant (7,670 p.)
Dziekuję, teraz działa
komentarz 10 lutego 2021 przez tangarr Mędrzec (154,860 p.)
Co się stanie jeżeli binarka kolegi będzie się nazywać debug.exe lub jako argument użyje słowa "dwa"?
komentarz 10 lutego 2021 przez tkz Nałogowiec (42,000 p.)
Kwestia implementacji i wstępnych założeń, nic mi do tego, bo takich szczegółów jest masa. Zaczynając nawet od globalnego using namesapce.
0 głosów
odpowiedź 10 lutego 2021 przez tangarr Mędrzec (154,860 p.)

Błąd masz w 16 linijce.

                if (argv[x] == "d")

Aby zrozumieć błąd odpowiedz na pytanie: Jakiego typu są argumenty argv[x] i "d"?
Od razu ci podpowiem, że nie są typu std::string.
 

Podobne pytania

0 głosów
1 odpowiedź 238 wizyt
0 głosów
1 odpowiedź 543 wizyt
pytanie zadane 8 grudnia 2019 w C i C++ przez BezBarwny Użytkownik (700 p.)

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...