0

这是一个在文件中存储一个人的姓名和号码的简单代码。当我还想包含该人的联系号码时会出现问题。扫描联系号码后会出现错误。

#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);
}
4

3 回答 3

0

您没有 malloc() 名称和号码的内存!

于 2013-11-11T15:07:19.767 回答
0

这是您的代码的摘录:

char *name;
fscanf(stdin,"%s",name);

name是指向 char(或字符串的第一个 char)的指针,但您没有初始化它的值,所以它指向任何地方。

第二行fscanf读取一个单词并将其写入内存中指向的地址name。因此,基本上,fscanf将尝试在可能无法写入的地方写入。

有2个解决方案:

  • 要么您更改char *namechar name[MAXNAME](其中MAXNAME是一个常数值)
  • 要么你做一个mallocchar *name = malloc(MAXNAME)

对于number.

于 2013-11-11T16:38:25.547 回答
0

为指针分配内存namenumber

name = malloc(sizeof(char) * num_elements);
number = malloc(sizeof(char) * num_elements);
于 2013-11-11T15:11:06.617 回答