Форум программистов, компьютерный форум CyberForum.ru

Помогите начинающему. Программа не работает полноценно - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Tuff
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 8
13.12.2010, 13:55     Помогите начинающему. Программа не работает полноценно #1
Я начинающий в программировании.Вот написал программу все нормально компилится но работать
так как задумал почему то не хочет.Вот текст:
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
#include <stdio.h>
#include <fcntl.h>
#define MAXLINE 1000
#define FILE 100
 
main()
{
int n,t,fd,a;
char file[FILE];
 
printf('Vvedi stroku: ');
scanf ('%d',a);
 
printf('Imya file:');
scanf ('%d,file');
 
fd = open(file, O_RDONLY);
 
while ((t=getchar()) != EOF){
 
if(t == a)
++n;
}
 
close(fd);
 
printf ('Chislo:%d ',n);
 
}
Задумывалось так:Спрашивает строку ,спрашивает имя файла,открывает файл,ищет там эту строку при нахождении
прибавляет ++n, и потом выводит скоко раз встречается эта строка в файле.
Но почему то когда запускаю получаю: # ./a.out
Vvedi stroku: e
Imya file:/root/t
и все дальше тишина.Помогите плиз разобраться.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2010, 13:55     Помогите начинающему. Программа не работает полноценно
Посмотрите здесь:

Помогите! Программа! C++
C++ Помогите начинающему программисту...
помогите совсем начинающему C++
C++ Не работает прога. Помогите
Помогите начинающему C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SevaB
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 39
13.12.2010, 16:45     Помогите начинающему. Программа не работает полноценно #2
getchar читает не из файла, а из консоли, из-за этого и стопор.
VDA
Сообщений: n/a
13.12.2010, 17:12     Помогите начинающему. Программа не работает полноценно #3
И еще, совет
Изучай сразу с++ а не с.
Сишное мышление чрезвычайно трудно переучивать.

С Уважением Дмитрий.
palva
 Аватар для palva
2373 / 1595 / 190
Регистрация: 08.06.2007
Сообщений: 6,364
Записей в блоге: 4
13.12.2010, 17:15     Помогите начинающему. Программа не работает полноценно #4
Вы смешали два способа работы с файлами. Если вы хотите использовать stdio.h, тогда файловая переменная имеет тип FILE* открывается файл fopen, закрывается fclose, символ читается fgetc, строка fgets
SevaB
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 39
14.12.2010, 09:33     Помогите начинающему. Программа не работает полноценно #5
Начинающим сионистам - физкульт привет.
Насколько я понимаю, сей код пишется под unix. Т.е. stdio.h подключается для printf, fcntl - для константы O_RDONLY. И используется парадигма 'open, read/write, close' и вместо getchar()
надо использовать read
Tuff
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 8
14.12.2010, 13:38  [ТС]     Помогите начинающему. Программа не работает полноценно #6
Спасибо всем за ответы.Сделал как посоветовали с fopen,fclose etc.
Но теперь он ругается на переполнение буфераgdb)Program received signal SIGSEGV, Segmentation fault. 0x2808421b in fgetc () from /usr/lib/libc.so.4.Может еще поможете,где мне буфер определять.
Изменения:
C++
1
2
3
4
FILE *fd;
fd = fopen(file,'r+');
while((t=fgetc(fd)) != EOF){
fclose(fd);
p.s. Я читаю из файла только цифры.
p.p.s. Заранее спасибо за ответы.
palva
 Аватар для palva
2373 / 1595 / 190
Регистрация: 08.06.2007
Сообщений: 6,364
Записей в блоге: 4
14.12.2010, 13:54     Помогите начинающему. Программа не работает полноценно #7
Как я понял, ошибка происходит при линковании. Наверно, здесь какая-то нестыковка между версией компилятора, линковщика и библиотек. Здесь могут помочь только знатоки UNIX компиляторов.
Tuff
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 8
18.12.2010, 13:12  [ТС]     Помогите начинающему. Программа не работает полноценно #8
А чего нету здесь знатоков UNIX кмпиляторов?
SevaB
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 39
19.12.2010, 09:03     Помогите начинающему. Программа не работает полноценно #9
Вероятно, файл не открывается. r+ не предусматривает создание файла если его нет. В результате имеет fd==NULL и все полагающиеся послествия.
Tuff
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 8
23.12.2010, 14:58  [ТС]     Помогите начинающему. Программа не работает полноценно #10
Но файл то существует.Я его заранее создал с правами 777.И потом вроде ошибка идет у функции fgetc().
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2010, 14:13     Помогите начинающему. Программа не работает полноценно
Еще ссылки по теме:

Ребята,помогите пожалуйста начинающему!! C++
Программа работает на Windows 7, но не работает на XP C++
C++ Начинающему

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

Или воспользуйтесь поиском по форуму:
man_of_ring
4 / 4 / 0
Регистрация: 09.12.2010
Сообщений: 278
27.12.2010, 14:13     Помогите начинающему. Программа не работает полноценно #11
там должна быть системная переменная для возврата ошибки
ну типа errorcod, или как в винде GetLastError();
найди эту переменную...и вытащи из нее код ошибки
так хоть поймешь где ошибка
напиши...
Yandex
Объявления
27.12.2010, 14:13     Помогите начинающему. Программа не работает полноценно
Ответ Создать тему
Опции темы

Текущее время: 16:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru