Ich habe Stunden damit verbracht, das Internet nach Hilfe zu durchsuchen. Ich bin sehr viel Anfänger bei der Verwendung von Zeigern, und ich bin schon auf eine Wand gestoßen: Ich bekomme immer den Fehler Segmentation fault (core dumped)
. Ich versuche, eine einfache Version von strncpy zu machen() mit Zeigern:grundlegende Zeiger verwenden: Segmentierung Fehler, Core Dumped
int main(int argc, char *argv[]) {
char *x = "hello"; /* string 1 */
char *y = "world"; /* string 2 */
int n = 3; /* number of characters to copy */
for (int i=0; i<=n; i++) {
if(i<n) {
*x++ = *y++; /* equivalent of x[i] = y[i] ? */
printf("%s\n", x); /* just so I can see if something goes wrong */
} else {
*x++ = '\0'; /* to mark the end of the string */
}
}
}
(Edit: Ich initialisiert x und y, aber immer noch die gleichen Fehler.)
Während auf der Suche nach Figur Sie heraus, was einen Teil davon war falsch, habe ich versucht, eine andere einfache Zeiger Sache:
int main(int argc, char *argv[]) {
char *s;
char *t;
int n; /* just initilaizing everything I need */
printf("Enter the string: ");
scanf("%s", s); /* to scan in some phrase */
printf("%s", s); /* to echo it back to me */
}
und siehe da, ich habe eine andere Segmentation fault (core dumped)
! Es ließ mich "hello
" einlesen, antwortete aber mit dem Fehler. Dieser Code ist so einfach. Was ist falsch mit meinem Zeiger hier zu verwenden?
A 'char *' zuteilt keinen Speicher für die Zeichenfolge, nur einen Zeiger auf Speicher. – bejado
Beratung: mehr Hintergrund lesen auf Konzepte auf C vor dem Fortfahren –
Danke Leute! @ Giorgimoniava Ich habe seit Stunden gelesen, leider, haha! Ich versuche (: –