1
struct subscriber

{

  char phonenumber[20];

  char name[50];

  float amount;

}s;

void modifyrecords()

  FILE *f;

  char phonenumber[20];

  long int size=sizeof(s);

  if((f=fopen("c:/file.ojs","rb+"))==NULL)

    exit(0);

  system("cls");

  printf("Enter phone number of the subscriber to modify:");

  scanf("%[^\n]",phonenumber);

  fflush(stdin);

  while(fread(&s,sizeof(s),1,f)==1)

  {

    if(strcmp(s.phonenumber,phonenumber)==0)

    {

      system("cls");

      printf("\n Enter phone number:");

      scanf("%s",&s.phonenumber);

      printf("\n Enter name: ");

      fflush(stdin);

      scanf("%[^\n]",&s.name);

      printf("\n Enter amount: ");

      scanf("%f",&s.amount);

      fseek(f,-size,SEEK_CUR);

      fwrite(&s,sizeof(s),1,f);

      break;

    }

  }

  fclose(f);

}

C:\Users***\Desktop\ac|394|错误:参数“大小”已初始化| 我在此代码中收到参数“大小”已初始化错误。谷歌搜索后,我发现我可能必须通过某些参数来抑制这类错误。这是唯一的解决方案吗?实际上我正在使用 Code::Blocks 所以如果是我如何在其中传递命令行参数的唯一方法?

4

1 回答 1

8

您在这里有一个简单的语法错误:

void modifyrecords()

应该:

void modifyrecords() {

另外,这个:

scanf("%s",&s.phonenumber);

应该

scanf("%s",s.phonenumber);

这也适用于s.name

于 2012-11-03T15:32:01.097 回答