Ich erhalte einen segfault, wenn ich strcmp() verwende. Ich habe versucht, debuggen mit gdb und wenn ich es (ohne Argumente) ich bekomme einen segfault. Wenn ich zurücktrace, zeigt es an, dass der segfault in Zeile 20 ist, aber ich kann nicht herausfinden, warum es segfaulting ist. Die Anweisung strcmp() befindet sich in Zeile 20. Ich werde die Zeilen 0-21 in meinen Beitrag einfügen, kann aber bei Bedarf weitere hinzufügen.C - segfault bei Verwendung von strcmp()
Die segfault Aussagen als ich sind die run
Befehl wie folgt:
Program received signal SIGSEGV, Segmentation fault.
__strcmp_sse2() at ../sysdeps/x86_64/multiarch/../stcmp.S:213
213 ../sysdeps/x86_64/multiarch/../strcmp.S: No such file or directory.
Also dann mache ich einen backtrace
und diese:
#0 __strcmp_sse2() at ../sysdeps/x86_64/multiarch/../strcmp.S:213
#1 0x0000000000400aa6 in main (c=1, v=0x7fffffffead8) at myls.c:20
Hier mein Code aus Linien 0-21 :
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/stat.h>
#include <time.h>
#include <fcntl.h>
#include <pwd.h>
#include <string.h>
#include <grp.h>
int main(int c, char *v[])
{
DIR *directory = NULL;
strut direct *dir_pointer = NULL;
int i = 0;
char cwd[1024];
if(strcmp(v[1], "-i") == 0){ //line 20, where the segfault happens
...
alle Tipps/Hilfe geschätzt.
"wenn ich laufe es (ohne Argumente)" - Huh ??? Sie hatten * besser * mindestens ein Argument zur Verfügung, oder nach dem Standard 'v [1]' ist NULL; 'strcmp' spielt nicht gut mit' NULL', für * entweder * seiner Argumente. – WhozCraig
@WhozCraig einige Hintergrundinformationen hierzu: Ich schreibe mein eigenes ls-Programm, das den Unix 'ls'-Befehl nachahmt. Wenn ich es mit './Myls' starte, ist das c = 1 korrekt? Und wenn ich es mit './myls -l laufen lasse, ist das c = 2? und das "-l" = v [1]? –
Ich rate Ihnen dringend, sorgfältig [Lesen Sie die q & a unter dem Link] (http://Stackoverflow.com/questions/3024197/what-does-int-argc-char-argv-mean) von Kons unten zur Verfügung gestellt. Es beantwortet diese Frage und viel, viel mehr. – WhozCraig