Ошибка в функциях вывода данных в файл - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Программа вводит записи, состоящие из 3 полей в 2 разных файла по выбору. Но в чём-то ошибка в функциях вывода данных в файл. А именно в строчке
scanf("%s",port->str1);
Т.к. новичёк вопрос ещё- можно ли scanf("%s",a), где char *a
#include "stdio.h"
#include "stdlib.h"
 
struct Record{
    char *str1;
    char *str2;
    char *str3;
} *port=NULL;
void input1();
void input2();
 
int main(){
           int c;
 
           printf("This program let you add cards of ports and ships\n");
    printf("If you want to add port card press 1\nTo add ship card press 2\n");
    printf("To close program press 3\n"); //zamenil escape na 3. Kak sdelat escape?
    if ((c=getchar())==51){
        exit (0);
    }
    else if (c==49){//Kod 1
        input1();
    }
    else if (c==50){//Kod 2
        input2();
    }
    return 0;
void input1(){
    FILE *f=fopen("ports.dat","ab");
    int c;
    int flag=0;
 
    if (f==NULL){
        perror("Error opening file");
    }
 
    while(!flag){
        printf("You are filling information about port\n\n\n");
 
        printf("Fill-in port name\n");// Vstavit proverki. Kakie?
        scanf("%s",port->str1);
        fprintf(f,"%s",port->str1);
 
        printf("Fill-in country\n");
        scanf("%s",port->str2);
        fprintf(f,"%s",port->str2);
 
        printf("Fill-in port's sea\n");
        scanf("%s",port->str3);
        fprintf(f,"%s",port->str3);
 
        printf("Return to main menu press 3. Otherwise press any key\n");
        //scanf("%c",&a);//
        if ((c=getchar())==51){//Mojno odni () ybrat ?Kak v windows proverit escape i enter?
            flag=1;
        }
    }
    fclose(f);
}
 
void input2(){
    FILE *f=fopen("ships.dat","ab");
    int c;
    int flag=0;
 
    if (f==NULL){
        perror("Error opening file");
    }
 
    while(!flag){
        printf("You are filling information about ship\n\n\n");
 
        printf("Fill-in ship name\n");// Vstavit proverki
        scanf("%s",port->str1);
        fprintf(f,"%s",port->str1);
 
        printf("Fill-in port of departure\n");
        scanf("%s",port->str2);
        fprintf(f,"%s",port->str2);
 
        printf("Fill-in arrival port\n");
        scanf("%s",port->str3);
        fprintf(f,"%s",port->str3);
 
        printf("Return to main menu press escape. Otherwise press any key\n");
        //scanf("%c",&a);//
        if ((c=getchar())==27){//Mojno odni () ybrat ?Kak v windows proverit escape i enter?
            flag=1;
        }
    }
    fclose(f);
}
up. Нужны советы

Решение задачи: «Ошибка в функциях вывода данных в файл»

textual
Листинг программы
struct my_struct {
   char str1[20];
   char str2[20];
   char str3[20];
} *tmp;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы