Warnung atoi

Persönliche Seite #1261978
Lesenswert?
• ▲
▼
Naja, die Frage danach, welche Headerdatei den Prototypen einer Funktion 
enthält, die kann man sich nun wirklich selbst beantworten, dazu muss 
man nur wissen, wie man seinen Computer dazu bringt, alle Dateien in 
einem Verzeichnis nach einem bestimmten Text zu durchsuchen.

Unter Windows:

  find atoi *.h

oder

  findstr -s atoi *.h

(letzteres geht auch noch rekursiv durch einen Verzeichnisbaum)

Das ist Grundlagenwissen. Dafür braucht es kein Google, dafür muss man 
keine Frage in einem Forum stellen.
Persönliche Seite #1262029
Lesenswert?
• ▲
▼
Rufus t. Firefly schrieb:

>   find atoi *.h

Das setzt voraus, dass ein Windows-User eine Kommandozeile oeffnen kann 
und den find-Befehl sowie dessen Syntax kennt. Das ist unter 
Mausschubsern kein Grundlagenwissen.

Andererseits koennte ein Windows-User sich auch uebers Startmenu zur 
Suchfunktion durchklicken, aber da ist die Anfrage hier im Forum schon 
schneller.
Gast #1262036
Lesenswert?
• ▲
▼
Also: Header File :    <stdlib.h>


Funtkion:    int atoi (const Char *s)

Atoi konvertiert einen String, auf den s zeigt nach int.
der String muss wie folgt aussehen:

[ws][vz][d]

[ws] = optionales Whitespace
[vz] = optionales Vorzeichen
[d]  = Ziffern

Konvertierung bricht bei 1. nichtlesbaren Zeichen ab.

Rückgabe:
- Alles gut: int Wert
- Alles schlecht: 0
#1262040
Lesenswert?
• ▲
▼
Rufus t. Firefly schrieb:
> Unter Windows:
>
>   find atoi *.h

Ergibt bei mir:

D:\Programme\MinGW\include>find atoi *.h
FIND: Parameterformat falsch

> oder
>
>   findstr -s atoi *.h

Ergibt bei mir:

D:\Programme\MinGW\include>findstr -s atoi *.h
stdlib.h:_CRTIMP int __cdecl    atoi    (const char*);
stdlib.h:_CRTIMP __int64 __cdecl        _atoi64(const char *);
stdlib.h:       { return _atoi64 (_c); }
tchar.h:#define _ttoi           atoi
tchar.h:#define _ttoi64     _atoi64
Gast #1262059
Lesenswert?
• ▲
▼
Wirklich traurig. Damals(tm) hat man erst mal apropos & man, evtl. auch 
grep & find benutzt. Wenn alles nichts half, dann hat man halt einen 
Blick in die C Bibel geworfen.
Wie unselbstständig muss man denn sein, um dermassen triviale Sachen in 
einem Forum zu erfragen.
Persönliche Seite #1262072
Lesenswert?
• ▲
▼
oldschool schrieb:

> Wirklich traurig. Damals(tm) hat man erst mal apropos & man, evtl. auch
> grep & find benutzt.

Mache ich heute auch so. Ist nur unter Windows schwierig (Rufus' 
Grundlagenwissen).

> Wenn alles nichts half, dann hat man halt einen
> Blick in die C Bibel geworfen.

Hier stehen auch die Numerical Recipes im Regal, die helfen dabei aber 
auch nicht.

> Wie unselbstständig muss man denn sein, um dermassen triviale Sachen in
> einem Forum zu erfragen.

Nein, das siehst Du falsch. Andy ist damit teamfaehig.
Gast #1262142
Lesenswert?
• ▲
▼
Olli R. schrob:

> Mache ich heute auch so. Ist nur unter Windows schwierig (Rufus'
> Grundlagenwissen).

Ach ja Windows. Da ist es ja noch viel einfacher. Auch wenn ich 
Microsoft Produkte eher nicht mag, VisualStudio ist da eine Ausnahme. 
Und die Online-Hilfe ist gut genug, um das Fehlen von apropos, man, grep 
& find zu verschmerzen.

> Nein, das siehst Du falsch. Andy ist damit teamfaehig.

Stimmt, Team ist ja das Akronym für "Toll, ein anderer machts".
#1262466
Lesenswert?
• ▲
▼
oldschool schrieb:

> Und die Online-Hilfe ist gut genug, um das Fehlen von apropos, man, grep
> & find zu verschmerzen.

Die Online Hilfe war in Visual Studio 4 noch gut.
Seit dem ist sie immer schlechter geworden.

> Das setzt voraus, dass ein Windows-User eine Kommandozeile oeffnen
> kann und den find-Befehl sowie dessen Syntax kennt. Das ist unter
> Mausschubsern kein Grundlagenwissen.

Leider.

Einen Verzeichnisbaum löschen kann in der Mausschubsoberfläche schon mal 
eine Zeit dauern. Dasselbe in Command.com dauert ein paar Augenzwinkern.
Dasselbe für Kopieraktionen: In der Zeit in der die GUI rausfindet 
wieviele Byes überhaupt zu kopieren sind, bist du in der Command Line 
schon 3 mal fertig.

Fazit: Ich kann mir nicht helfen. Aber wenigstens ein bischen 
Grundlagenwissen, wie man mit einer Command Line arbeitet, sollte jeder 
Benutzer haben. Vor allen Dingen dann, wenn er Software entwickelt.
Gast #1262485
Lesenswert?
• ▲
▼
Hier im Thread tummeln sich ja wieder mal besonders gescheite 
Programmierer ;-)

Hier mal mein Ansatz, mit einem gescheiten Erklärungsversuch:
Wenn eine Warnung kommt wie "implicit declaration of function 'atoi'
" dann fehlt wahrscheinlich nur das include zur Headerdatei, in welchem 
sich die Vorwärtsdeklaration zur Funktion 'atoi' befindet.
Also müsste folgende Zeile helfen:
1
#include <stdlib.h>
Persönliche Seite #1262606
Lesenswert?
• ▲
▼
Johnny schrieb:

> Hier mal mein Ansatz, mit einem gescheiten Erklärungsversuch:
> Wenn eine Warnung kommt wie "implicit declaration of function 'atoi'
> " dann fehlt wahrscheinlich nur das include zur Headerdatei, in welchem
> sich die Vorwärtsdeklaration zur Funktion 'atoi' befindet.
> Also müsste folgende Zeile helfen:
>
1
> #include <stdlib.h>
2
>

Du bist ja putzig.

Ja, dass er die includen muss, war dem OP schon klar. Seine Frage war 
nur, wie er die entsprechende Headerdatei namentlich identifizieren 
kann, und da hilft kurz gurgeln.
Gast #1262612
Lesenswert?
• ▲
▼
Welche Funktion welche Headerdatei benötigt
steht normalerweise in der Compilerhilfe
oder in der Beschreibung zu den Librarys.
Wenn man zu faul ist die entsprechenden Dokumente
mal zu lesen, darf man sich nicht wundern wenn
ein wenig Spott aufkommt.
Gast #1262614
Lesenswert?
• ▲
▼
Na dann machen wir das doch mal passend zum Titel:

Warnung vor atoi. Bibel sagt:
1
The atoi() function is subsumed by strtol() but is retained because  it
2
is  used extensively in existing code. If the number is not known to be
3
in range, strtol() should be used because atoi()  is  not  required  to
4
perform any error checking.
Gast #1262779
Lesenswert?
• ▲
▼
> Seine Frage war nur, wie er die entsprechende Headerdatei namentlich
> identifizieren kann, und da hilft kurz gurgeln.

Ach so.
In solchen Fällen implementiere ich die betreffende Funktion einfach 
rasch selber, suchen gurkt mich an.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren