此文件处理代码中存在运行时错误

时间:2013-11-11 15:05:36

标签: c runtime-error file-handling

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

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

为指针namenumber

分配内存
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为常量值)
  • 要么mallocchar *name = malloc(MAXNAME)

number也一样。