这是一个将人名和号码存储在文件中的简单代码。当我还想要包含该人的联系电话时会出现问题。扫描联系号码后会出现错误。
#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp;//file pointer
char *name,*number;
char filename[]="testfile.txt";//file to be created
fp=fopen(filename,"w");
if(fp==NULL)
{
printf("\nerror\n");
exit(1);
}
fprintf(stdout,"Please enter a name:\t");
fscanf(stdin,"%s",name);
fprintf(fp,"%s",name);
fprintf(stdout,"Enter contact number:\t");
fscanf(stdin,"%s",number);
fprintf(fp,"%s",number);
fclose(fp);
}
答案 0 :(得分:0)
你没有malloc()内存的名称和号码!
答案 1 :(得分:0)
为指针name
和number
name = malloc(sizeof(char) * num_elements);
number = malloc(sizeof(char) * num_elements);
答案 2 :(得分:0)
以下是您的代码摘录:
char *name;
fscanf(stdin,"%s",name);
name
是指向char(或字符串的第一个字符)的指针,但是你没有初始化它的值,所以它指向任何地方。
fscanf
的第二行读取一个单词并将其写入内存中name
指向的地址。所以,基本上,fscanf
会尝试写一些它可能无法写入的地方。
有两种解决方案:
char *name
更改为char name[MAXNAME]
(其中MAXNAME
为常量值)malloc
:char *name = malloc(MAXNAME)
number
也一样。