Программа компилируется без ошибок, но не запускается - C (СИ)
Формулировка задачи:
Программа компилируется без ошибок, но не запускается. В чем проблема? Помогите, пожалуйста
#include <stdio.h>
#include <malloc.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct node
{ char word;
int count;
struct node *next;
};
void add(struct node *b, struct node *start)
{
struct node *tem, *cur;
tem=(struct node* )malloc(sizeof(struct node ));
if(tem==NULL)
{printf("NO!\n");
}
tem->word=b->word;
tem->count=b->count;
tem->next=NULL;
if(start==NULL)
{start=tem;
}
else
{cur=start;
while(cur->next!=NULL)
{
cur=cur->next;
}cur->next=tem;
}
}
struct node* vvod(struct node *start)
{
struct node *b;
FILE *fp;
fp=fopen("in.txt", "r");
//fscanf(fp,"%s %d", b->word, &(b->count));
if(fp==NULL)
{printf("NO!\n");
}
while(b->word!=EOF && b->count!=EOF)
{ fscanf(fp,"%s %d", b->word, &(b->count));
add(b, start);
printf("%d %s",b->word, b->count);
}
return b;
}
int main()
{struct node *start;
struct node *b;
start=NULL;
b=vvod(start);
//print(start, b);
}
void print(struct node *start, struct node *b)
{
if(start==NULL)
{printf("NOO!\n");
}
b=start;
printf("\n");
while(b!=NULL)
{printf("%s %d",b->word, &b->count);
b=b->next;
}
}Решение задачи: «Программа компилируется без ошибок, но не запускается»
textual
Листинг программы
struct node *b;
FILE *fp;
fp=fopen("in.txt", "r");
//fscanf(fp,"%s %d", b->word, &(b->count));
if(fp==NULL)
{printf("NO!\n");
}
while(b->word!=EOF && b->count!=EOF)
Объяснение кода листинга программы
- Объявляются две переменные:
bтипаstruct node*иfpтипаFILE*. - Переменная
fpинициализируется вызовом функцииfopen(in.txt,r). - Переменная
bуказывает на первый элемент в списке. - Выполняется проверка на успешное открытие файла. Если файл не может быть открыт, выводится сообщение об ошибке.
- В условии цикла
whileиспользуется оператор!=, поэтому предполагается, что он будет выполняться до тех пор, покаb->wordне станет равнымEOFилиb->countне станет равнымEOF. - Внутри цикла предполагается, что сначала выполняется чтение из файла с помощью
fscanf(fp,%s %d, b->word, &(b->count)), а затем выполняется какая-то другая операция с переменнымиb->wordиb->count. Однако, в данном коде эта операция не указана.