Работа с файлами, программа ничего не выводит - C (СИ)
Формулировка задачи:
Вот программа, я не пониvаю как работает она с файлом. я запускаю ее, она как будто закончила работу и ничего не выводит. файл 123 находится на диске D. Может я что-то не так делаю? помогите пожалуйста разобраться
#include <stdio.h>
#include <stdlib.h>
int main()
{ FILE *f;
char txt[20][10];
int j=0,i;
f=fopen("D:\123.txt","r");
fgets(txt[i],80,f);
while (feof(f))
{
for (j=0; j<i; j++)
if (((j=='+') || (j=='-') || (j=='*') || (j=='/')) && ((j+1=='+')||(j+1=='-')||(j+1=='*')||(j+1=='/')))
{
i++;
printf("Warnings %d, number %d \n",i,j);
}
}
fclose(f);
}Решение задачи: «Работа с файлами, программа ничего не выводит»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
bool is_sign(char c)
{
static const char *signs = "+-*/";
return strchr(signs, c);
}
int main(void)
{
char buf[BUFSIZ];
FILE *file;
file = fopen("123.txt","r");
for (int line = 0; fgets(buf, BUFSIZ, file); line++)
for (int pos = 0, len = strlen(buf) - 1; pos < len; pos++)
if (is_sign(buf[pos]) && is_sign(buf[pos + 1])) {
fprintf(stderr, "Error line: %d pos: %d\n", line + 1, pos + 1);
pos++;
}
fclose(file);
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется функция is_sign, которая проверяет является ли символ знаком
- Задается входной параметр функции - символ c
- В функции используется статическое определение строки знаков, для которых нужно проверить символ на принадлежность
- В функции используется функция strchr для поиска символа в строке знаков
- В функции main открывается файл
123.txtдля чтения - В цикле считывается каждая строка из файла в буфер buf
- В цикле для каждой строки проверяется каждый символ на наличие знака
- Если найдены два знака, выводится сообщение об ошибке с указанием номера строки и позиции символа
- В конце программы закрывается файл и возвращается 0, что означает успешное выполнение программы