Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 20.02.2015
Сообщений: 81
1

Работа с файлами, программа ничего не выводит

13.11.2016, 19:30. Показов 1573. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот программа, я не пониvаю как работает она с файлом. я запускаю ее, она как будто закончила работу и ничего не выводит. файл 123 находится на диске D. Может я что-то не так делаю? помогите пожалуйста разобраться

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#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);  
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2016, 19:30
Ответы с готовыми решениями:

Программа ничего не выводит
При компиляции ничего не выводит #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt;...

Программа не выводит ничего
Собственно начал изучать NASM но у меня не выводится в этой программе ничего global _start ...

Программа ничего не выводит
Здравствуйте, помогите, пожалуйста. Программа компилируется нормально, ошибок компилятор не выдает....

Программа ничего не выводит
program p1; var s: string; n, i: byte; begin readln (s); readln (n); for i:=1 to length(s) do...

11
0 / 0 / 1
Регистрация: 13.11.2016
Сообщений: 17
13.11.2016, 23:17 2
int j=0,i;
///
fgets(txt[i],80,f);
И чему же тут равно I? Скажите лучше чего нужно добиться, ибо этот код реально не рабочий.

Добавлено через 6 минут
Еще смущает конструкция
C
1
2
3
4
5
6
7
 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);
             }
        }
Тут до тех пор пока j<i; мы что-то там делаем и потом i увиличиваем на единицу. Это как бы сказать попытка обогнать паравоз в котором вы едите.
0
0 / 0 / 1
Регистрация: 20.02.2015
Сообщений: 81
14.11.2016, 17:45  [ТС] 3
Вот задача:дан текстовый файл. Проверить, не встречаются ли в данном тексте два знака арифметических операций, идущих подряд, например:+-3,5;/-12,4 и т.п. Если такие ситуации будут обнаружены, то выдать на экран сообщение об ошибке с указанием номера строки и номера позиции
0
153 / 148 / 66
Регистрация: 20.02.2014
Сообщений: 556
14.11.2016, 18:07 4
Цитата Сообщение от АнастасияО Посмотреть сообщение
=fopen("D:\123.txt","r");
C
1
fopen("D:\\123.txt","r");
0
0 / 0 / 1
Регистрация: 13.11.2016
Сообщений: 17
16.11.2016, 21:16 5
Цитата Сообщение от АнастасияО Посмотреть сообщение
то выдать на экран сообщение об ошибке с указанием номера строки и номера позиции
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{ FILE *mf;
 
char sym, prevsym;
 
int line=1;
int j = 1;
  mf=fopen(argv[1],"r");
    while (1){
      sym = getc (mf);
      if (sym == EOF){
         if (feof (mf) != 0)
         {  
            break;
         }
         else
         {
            printf ("\nОшибка чтения из файла\n");
            break;
         }
 
      }
      if(sym == '\n'){
        line++;
        j=0;
      }
if(((sym=='+') || (sym=='-') || (sym=='*') || (sym=='/')) && ((prevsym=='+')||(prevsym=='-')||(prevsym=='*')||(prevsym=='/')))       
 printf("Warnings  %d, number %d \n",line,j);
     prevsym = sym; 
j++;
   }
 
  fclose(mf);  
}
Лично я бы поступил так.Вложение 760396
0
0 / 0 / 1
Регистрация: 20.02.2015
Сообщений: 81
17.11.2016, 14:56  [ТС] 6
А где файл читается?
0
0 / 0 / 1
Регистрация: 13.11.2016
Сообщений: 17
17.11.2016, 15:32 7
Цитата Сообщение от АнастасияО Посмотреть сообщение
А где файл читается?
В коде конечно же. Я проверил, все работает. Путь к файлу передается в аргументе командной строки. Я читаю в цикле по одному символу. sym = getc (mf); Если символ перевод строки то отсчет колонки начинается сначала. Так же там есть вспомогательная переменная, предыдущий символ. С ним то я и сравниваю.
Да, и еще, если это важно, я работаю только под Линуксом, так что и проверял в Лине, как там насчет винды понятия не имею, но по сути должно работать также.
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
17.11.2016, 16:05 8
Лучший ответ Сообщение было отмечено АнастасияО как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#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;  
}
0
0 / 0 / 1
Регистрация: 13.11.2016
Сообщений: 17
17.11.2016, 16:28 9
Цитата Сообщение от shvyrevvg Посмотреть сообщение
for (int line = 0; fgets(buf, BUFSIZ, file); line++)
Не работает так.
Работа с файлами, программа ничего не выводит
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
17.11.2016, 16:32 10
Цитата Сообщение от stierlitz Посмотреть сообщение
Не работает так.
Ну Вам же написали запускайте с -std=c99
1
0 / 0 / 1
Регистрация: 13.11.2016
Сообщений: 17
17.11.2016, 16:36 11
Цитата Сообщение от shvyrevvg Посмотреть сообщение
запускайте с -std=c99
А так работает.
Работа с файлами, программа ничего не выводит
0
shvyrevvg
17.11.2016, 16:37     Работа с файлами, программа ничего не выводит
  #12

Не по теме:

stierlitz, а куда она денется :)

0
17.11.2016, 16:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2016, 16:37
Помогаю со студенческими работами здесь

почему программа ничего не выводит
Здравствуйте, 1 день на Java я. Вопрос, почему ничего не выводит данная программа? Помогите...

Программа компилируется, но ничего не выводит
program L6; Var s,st,s1,s2:string; k,ss:byte; function poss(r:byte;sa:string;var...

Программа запускается, но ничего не выводит
Пишу в CodeBlocks. Задание: Дан массив из 18 вещественных чисел, все элементы которого различны....

Программа ничего не выводит на экран
#include &lt;stdio.h&gt; int N,M; int a; int KP,KV; int o,oN,t; int i,j; void next(int x){ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru