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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.94
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
#1

Работа с файлами. Язык С - C++

02.09.2009, 22:13. Просмотров 2240. Ответов 27
Метки нет (Все метки)

существует такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
int c;
   FILE *f=fopen("C:/test.txt", "r");
c=getc(f);
 
 
 
        char a[256];
        
        
        strcpy(a, b);
        cout<<strupr(a);
        cin.get();
надо чтобы слова из test.txt выводил прописными буквами...но при компиляции орет на:
Error 2 error C2664: 'strcpy' : cannot convert parameter 2 from 'int' to 'const char *' c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 31 proba
а этот метод
C++
1
2
3
int c;
   FILE *f=fopen("C:/test.txt", "r");
c=getc(f);
я взял с КиР
сделал еще и так
C++
1
2
3
char c;
   FILE *f=fopen("C:/test.txt", "r");
c=getc(f);
тоже самое
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2009, 22:13     Работа с файлами. Язык С
Посмотрите здесь:
C++ Работа с файлами (язык C)
C++ Работа со строками (язык С)
C++ Работа с рядками. [ЯЗЫК C]
работа с файлами C++
Работа с файлами C++
C++ Работа с файлами
Работа с файлами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
02.09.2009, 23:47     Работа с файлами. Язык С #2
МедведЪ, а что такое b и что в ней лежит?
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
03.09.2009, 15:28  [ТС]     Работа с файлами. Язык С #3
Цитата Сообщение от M128K145 Посмотреть сообщение
МедведЪ, а что такое b и что в ней лежит?
не не не!это я потом В создал а потом удалил..это тако осталось там должно быть С
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
03.09.2009, 15:38     Работа с файлами. Язык С #4
strcpy здесь вобще не к месту.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <ctype.h>
int main(void)
{
    int c;
    FILE *fp;
    
    if( (fp = fopen("test.c", "r")) == NULL)
        return 1;
    while( (c = getc(fp)) != EOF)
        putchar(toupper(c));
    fclose(fp);
    return 0;
}
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
03.09.2009, 20:01  [ТС]     Работа с файлами. Язык С #5
Цитата Сообщение от Gravity Посмотреть сообщение
strcpy здесь вобще не к месту.
а это разве не С?

Gravity, прокомпилировал твой код,получается бесконечный цикл....должно выводить Hello world a выводит
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
03.09.2009, 20:03     Работа с файлами. Язык С #6
Цитата Сообщение от МедведЪ Посмотреть сообщение
а это разве не С?
Си. И что?

Весь свой код покажи.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
03.09.2009, 20:10  [ТС]     Работа с файлами. Язык С #7
Цитата Сообщение от Gravity Посмотреть сообщение
Си. И что?
вообще то я на С писал..
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "windows.h"
#include "stdio.h"
#include "math.h"
 
#include <iostream>
#include "time.h"
#include <ctype.h>
 
using namespace std;
 
int main(){
   setlocale(0,"");
int c;
   FILE *f=fopen("C:/test.txt", "r");
c=getc(f);
 
while(c!=EOF){
      putchar(toupper(c));
}
      system("PAUSE");
  return 0;
  }
Добавлено через 1 минуту
Gravity, еще так пробывал

C
1
2
3
4
while(c!=EOF){
       putchar(toupper(c));
}
cout<<c;
и

C++
1
2
3
4
while(c!=EOF){
      putchar(toupper(c));
 cout<<c;
}
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
03.09.2009, 20:51     Работа с файлами. Язык С #8
Вот
решение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <conio.h>
#include <ctype.h>
 
int main()
{
    FILE *f=fopen("c://test.txt", "r"); 
    int c;
    while( (c = getc(f)) != EOF)
        putchar(toupper(c));
    printf("%c", c);
    fclose(f);
    _getch();
    return 0;
}


ЗЫ. Gravity ведь правильный код всегда пишет!
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
03.09.2009, 20:56     Работа с файлами. Язык С #9
Цитата Сообщение от M128K145 Посмотреть сообщение
ЗЫ. Gravity ведь правильный код всегда пишет!
К сожалению, некоторые даже скопировать правильно не могут.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
03.09.2009, 21:09  [ТС]     Работа с файлами. Язык С #10
Цитата Сообщение от Gravity Посмотреть сообщение
сожалению, некоторые даже скопировать правильно не могут
а кто такое эти некоторые????....

Добавлено через 2 минуты
Цитата Сообщение от M128K145 Посмотреть сообщение
ЗЫ. Gravity ведь правильный код всегда пишет!
Цитата Сообщение от Gravity Посмотреть сообщение
К сожалению, некоторые даже скопировать правильно не могут.
к вашему сведению в коде Gravity не было #include <conio.h> и _getch();,это первое
второе выводит только Hello
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
03.09.2009, 22:59     Работа с файлами. Язык С #11
МедведЪ, видиш ли в чем дело, я то С не знаю, я знаю только С++ и что-то мне подсказывает, что Gravity знает в С больше чем я .
И еще, вот тот код который написал тов. Gravity работает так же корректно как и мой.
Не вериш? Проверь этот
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <ctype.h>
int main(void)
{
    int c;
    FILE *fp;
    if( (fp = fopen("c://test.txt", "r")) == NULL)
        return 1;
    while( (c = getc(fp)) != EOF)
        putchar(toupper(c));
    fclose(fp);
    printf("%c", c);
    return 0;
}
Здесь нет ни conio.h, ни _getch()
easybudda
Эксперт С++
9459 / 5472 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
03.09.2009, 23:14     Работа с файлами. Язык С #12
Цитата Сообщение от МедведЪ Посмотреть сообщение
к вашему сведению в коде Gravity не было #include <conio.h> и _getch();,это первое
второе выводит только Hello
К Вашему сведению файл conio.h - это очередной костыль от майкрософт и к стандартному С никакого отношения не имеет. У меня вот в GCC и файла-то такого нет, а код, который Вам в пример привели, каким-то чудом работает... Кстати, если и есть на свете код в стиле К&Р, то это как раз он!
-=ЮрА=-
Заблокирован
Автор FAQ
04.09.2009, 09:48     Работа с файлами. Язык С #13
C++
1
FILE *f=fopen("C:/test.txt", "r");
Неправильно путь к файлу указан, как у кого-то что то компилировалось без проблем не понятно!!!Правильно так:
C++
1
FILE *f = fopen("C:\\test.txt","rb+");
"rb+" рекомендую по опыту...
easybudda
Эксперт С++
9459 / 5472 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
04.09.2009, 10:08     Работа с файлами. Язык С #14
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
C++
1
FILE *f=fopen("C:/test.txt", "r");
Неправильно путь к файлу указан, как у кого-то что то компилировалось без проблем не понятно!!!
Цитата Сообщение от Gravity Посмотреть сообщение
C
1
2
3
4
... 
    if( (fp = fopen("test.c", "r")) == NULL)
        return 1;
...
Вот это без проблем компилируется
А вот открывать текстовые файлы, как двоичные лучше не нужно. Иначе символ конца строки может неправильно обрабатываться (в винде актуально - символ '\n' 0x0ah для текстовых файлов автоматически заменяется на последовательность '\r''\n' 0x0dh 0x0ah)
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.09.2009, 10:12     Работа с файлами. Язык С #15
внутривиндовая фича, то есть открываешь командную строку и пишешь type c:/boot.ini
easybudda
Эксперт С++
9459 / 5472 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
04.09.2009, 10:29     Работа с файлами. Язык С #16
Цитата Сообщение от accept Посмотреть сообщение
внутривиндовая фича, то есть открываешь командную строку и пишешь type c:/boot.ini
В SP2 не прокатило
Код
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Documents and Settings\andrew>type c:/boot.ini
Ошибка в синтаксисе команды.

C:\Documents and Settings\andrew>type c:\boot.ini
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional R
U" /noexecute=optin /fastdetect

C:\Documents and Settings\andrew>
Может с SP3 начиная появилось? В прочем, если пишешь учебную програмку, и она в таком виде компилируется, то можно, наверное, и не заморачиваться. Но про то, что "есть варианты" лучше помнить...
-=ЮрА=-
Заблокирован
Автор FAQ
04.09.2009, 11:15     Работа с файлами. Язык С #17
easybudda, а если файл для обработки не в одном каталоге с программой?
Что test.c скомпилилось понятно...
А за двоичный режим, то на практике, когда fprintf использую для текстового режима в тектовик сразу две пустых строчки вместо одной докидывается, поэтому и использую двоичный режим, впрочем у меня может быть бок в студии утверждать не стану...
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.09.2009, 11:20     Работа с файлами. Язык С #18
http://msdn.microsoft.com/en-us/libr...47(VS.85).aspx

там в дебрях есть насчёт конвертации

Код
Note  File I/O functions in the Windows API convert "/" to "\" as part of converting the name to an NT-style name, except when using the "\\?\" prefix as detailed in the following sections.
то есть, видимо, начиная с NT
easybudda
Эксперт С++
9459 / 5472 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
04.09.2009, 11:33     Работа с файлами. Язык С #19
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
easybudda, а если файл для обработки не в одном каталоге с программой?
Что test.c скомпилилось понятно...
А за двоичный режим, то на практике, когда fprintf использую для текстового режима в тектовик сразу две пустых строчки вместо одной докидывается, поэтому и использую двоичный режим, впрочем у меня может быть бок в студии утверждать не стану...
Если не понятно, где читаемый файл будет, то по-моему лучше его имя из коммандной строки читать (argv[1]). А по поводу fprintf - может у Вас реализация её чуднАя какая-нибудь? Если что-то типа
C
1
fprintf(stdout, "Hello\nWorld\n");
написать, между строками лишняя пустая появится?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2009, 16:53     Работа с файлами. Язык С
Еще ссылки по теме:
C++ Работа с файлами
C++ Работа с файлами
C++ Работа с файлами
C++ Работа с файлами
Работа с файлами C++

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

Или воспользуйтесь поиском по форуму:
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
04.09.2009, 16:53  [ТС]     Работа с файлами. Язык С #20
easybudda,
accept,
-=ЮрА=-,
вы вообще о чем думаете??я сказал что не компилируется??????Я говорил компилируется и выводиться одно слово из двух...
Yandex
Объявления
04.09.2009, 16:53     Работа с файлами. Язык С
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru