无法将 write/read 以逗号分隔的字符串存入文件
Cannot write/read string separated by coma into a file
我想把一个结构体的一组参数写入一个文件,然后在程序中读取。该结构有一个int
类型的变量和一个string
类型的变量(这个字符串由space分隔)。我已经成功编写并读取了结构的整数部分,但是当我尝试对字符串执行相同操作时,程序崩溃了。我认为这与我的 fprintf
语句有关,并试图读取由 space.
分隔的字符串
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main(void) {
// creating a FILE variable
FILE *fptr;
// integer variable
int i = 0;
char n[50];
// character variable
struct cliente {
char nome[50];
int nif;
};
struct cliente client[0];
// open the file in write mode
fptr = fopen("student", "w");
if (fptr != NULL) {
printf("File created successfully!\n");
}
else {
printf("Failed to create the file.\n");
// exit status for OS that an error occured
return -1;
}
// get student detail
printf("Enter student name: ");
scanf(" %[^\t\n]c", client[1].nome);
printf("Enter student ID: ");
scanf("%d", &client[1].nif);
// write data in file
fprintf(fptr, "%d %s", client[1].nif, &client[1].nome);
// close connection
fclose(fptr);
// open file for reading
fptr = fopen("student", "r");
// display detail
printf("\Ficheiro:\n");
fscanf(fptr, "%d %s", &i, n);
printf("ID: %d\n", i);
printf(" %s", n);
// close connection
fclose(fptr);
return 0;
}
您声明了一个零长度数组 (struct cliente client[0]
),但引用了数组中的第二个元素 (client[1]
)。这可能会导致崩溃。
我想把一个结构体的一组参数写入一个文件,然后在程序中读取。该结构有一个int
类型的变量和一个string
类型的变量(这个字符串由space分隔)。我已经成功编写并读取了结构的整数部分,但是当我尝试对字符串执行相同操作时,程序崩溃了。我认为这与我的 fprintf
语句有关,并试图读取由 space.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main(void) {
// creating a FILE variable
FILE *fptr;
// integer variable
int i = 0;
char n[50];
// character variable
struct cliente {
char nome[50];
int nif;
};
struct cliente client[0];
// open the file in write mode
fptr = fopen("student", "w");
if (fptr != NULL) {
printf("File created successfully!\n");
}
else {
printf("Failed to create the file.\n");
// exit status for OS that an error occured
return -1;
}
// get student detail
printf("Enter student name: ");
scanf(" %[^\t\n]c", client[1].nome);
printf("Enter student ID: ");
scanf("%d", &client[1].nif);
// write data in file
fprintf(fptr, "%d %s", client[1].nif, &client[1].nome);
// close connection
fclose(fptr);
// open file for reading
fptr = fopen("student", "r");
// display detail
printf("\Ficheiro:\n");
fscanf(fptr, "%d %s", &i, n);
printf("ID: %d\n", i);
printf(" %s", n);
// close connection
fclose(fptr);
return 0;
}
您声明了一个零长度数组 (struct cliente client[0]
),但引用了数组中的第二个元素 (client[1]
)。这可能会导致崩溃。