-4

fseekを使用して名前を変更しようとしましたが、名前を変更して同じままにすることはできません。

struct phonebook { char name[20]; };
struct phonebook a;

char temp[20];
cpPtr=fopen("name.txt","rb");//open the file
while(fread(&a,sizeof(a),1,cpPtr)==1){
    printf("Please enter name :\n");//require user to enter name
    scanf("%s",&temp);//temporary variable
    fflush(stdin);
    if(stricmp(a.name,temp)==0){
        printf("NAME :%s\n",a.name);
        else
            printf("The name is not exist");
        getch();
    }

    printf("Please enter new NAME :");
    scanf("&s",a.name);
    fflush(stdin);
    fseek(cpPtr,-sizeof(a),SEEK_CUR);//is there any wrong with seek?
    fwrite(&a,sizeof(a),1,cpPtr);
    fclose(cpPtr);
    printf("Name is modified");
    getch();
    system("cls");
}
4

1 に答える 1

2

読み取り専用にファイルを開きます。読み取りと書き込みの両方を行う場合は、ファイルを読み取り/書き込みモードで開く必要があります。

fopen("name.txt","r+b"); // open read+write
于 2013-03-04T08:09:53.253 に答える