Listener di lunga durata, primo chiamante.Errore di segmentazione durante l'assegnazione dei valori ai puntatori nella funzione
Mi scuso se questo problema è già stato affrontato (immagino che sia è stato ampiamente coperto), ma ho cercato attraverso molte domande su puntatori e altri argomenti apparentemente affini, ma sono ancora in grado di risolvere il mio problema.
Attualmente sto scrivendo una stringa di libreria per progetto di classe, e quando sto ottenendo un errore di segmentazione quando provo questo:
#include "str2107.h"
#include <stdio.h>
void lstrip(char *s) {
char *p, *q;
p = q = s;
while (*p == ' ' && *p != '\0') {
*p++;
}
while (*p != '\0') {
*q = *p; //this is where the actual segmentation fault occurs.
p++;
q++;
}
*q = '\0';
}
Il mio programma principale si presenta così:
#include <stdio.h>
#include <stdlib.h>
#include "str2107.h"
int main(int argc, char** argv) {
char *z1 = " weeee";
printf("lstrip function\n");
printf("%s\n",z1);
lstrip(z1);
printf("%s\n",z1);
return 0;
}
non collegato: spero che si vede la futilità della seconda metà di questa espressione in un istante-condizione: '(* p == ''! && * p = '\ 0') '. Sotto esattamente quali condizioni possibili la prima parte sarà vera e la seconda parte sarà * falsa * ??? Versione più breve: '(* p == '')' – WhozCraig
Grazie per averlo indicato! – Torchedmuffinz
+1 per fornire un [SSCCE] (http://sscce.org/) che riproduce il problema. –