Программа компилируется без ошибок, но не запускается - 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
. Однако, в данном коде эта операция не указана.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д