Ich habe Code, der mir einen Segmentierungsfehler gibt. Ich debuggte es und und der Fehler trat auf, als der strcpy ausgeführt wurde. Der Code versucht, Daten aus einer Textdatei zu extrahieren und in einem Array von Strukturen zu speichern. Ich plane, strcpy zu verwenden, um die Daten der Textdatei in den Strukturen zu speichern. Irgendeine Idee, warum das vorkommt?strcpy gibt mir Segmentierungsfehler
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int input(char *s, int length);
void main(){
char *tok;
char *buffer;
size_t bufsize = 32;
size_t characters;
FILE *f;
char *file_name;
char line[255];
int currentRoom;
int count = 0;
typedef struct {
char room_n;
char description[100];
char room_north;
char room_south;
char room_west;
char room_east;
} room;
//Creating an array of structs
room record[1000];
while(1){
buffer = (char *)malloc(bufsize * sizeof(char));
if(buffer == NULL){
perror("Unable to allocate buffer");
exit(1);
}
printf("Enter a command: ");
characters = getline(&buffer, &bufsize, stdin);
if(strcmp(buffer,"exit\n") == 0){
printf("Exiting...\n");
exit(1);
}
tok = strtok(buffer, " \n"); // Tokenize input
printf("%s is the token \n", tok);
if (strcmp(tok,"loaddungeon") == 0){
file_name = strtok(NULL, "\n");
printf("file name : %s \n", file_name);
f = fopen(file_name,"r");
while (fgets(line, sizeof(line), f) != NULL)
{
char val1[128];
char val2[128];
char val3[128];
char val4[128];
char val5[128];
char val6[128];
strcpy(val1, strtok(line, "$"));
strcpy(val2, strtok(NULL, "$"));
strcpy(val3, strtok(NULL, " "));
strcpy(val4, strtok(NULL, " "));
strcpy(val5, strtok(NULL, " "));
strcpy(val6, strtok(NULL, " "));
//Segmentation fault error occurs here
strcpy(record[count].room_n, val1);
Die Argumente für 'strcpy()' müssen 'char *' sein. 'room_n' ist' char'. – Barmar
Sie sollten eine Compiler-Warnung über diese Zeile erhalten haben. Warnungen nicht ignorieren. – Barmar
Ich änderte die Zeile in der Struktur von char room_n zu char * room_n und keine Warnung mehr erhalten, aber immer noch Segmentfehler. – user87002