• 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

Hosting forpsi easy 1 pln
0 głosów
147 wizyt
pytanie zadane 10 lutego 2021 w C i C++ przez toko Mądrala (6,010 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 Mądrala (6,010 p.)
Dziekuję, teraz działa
komentarz 10 lutego 2021 przez tangarr Mędrzec (154,220 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,220 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ź 106 wizyt
0 głosów
1 odpowiedź 437 wizyt
pytanie zadane 8 grudnia 2019 w C i C++ przez BezBarwny Użytkownik (700 p.)

92,105 zapytań

140,763 odpowiedzi

317,744 komentarzy

61,426 pasjonatów

Advent of Code 2023

Top 15 użytkowników

  1. 785p. - Łukasz Eckert
  2. 777p. - Dawid128
  3. 738p. - Eryk Andrzejewski
  4. 712p. - rucin93
  5. 674p. - CC PL
  6. 647p. - nidomika
  7. 637p. - Michal Drewniak
  8. 636p. - Mikbac
  9. 595p. - the Bielsky
  10. 573p. - robwarsz
  11. 571p. - TheLukaszNs
  12. 537p. - 13NOONE37
  13. 536p. - Arkadiusz Waluk
  14. 533p. - Henry Saele
  15. 525p. - sefirek
Szczegóły i pełne wyniki

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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...