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

Как занести в массив содержимое файла? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывод русских символов в консоль http://www.cyberforum.ru/cpp-beginners/thread111235.html
Чтобы выводить русские буквы в консоли, написал функцию rustext() #include<iostream> using namespace std; #include<windows> char rustext(char str) {
C++ Описать структуру с именем WORKER Помогите пожалуйста: 1: Описать структуру с именем WORKER, содержащую следующие поля: -NAME - фамилия и инициалы паботника; -POS -название должности; -YEAR - год поступления на работу; Написать ... http://www.cyberforum.ru/cpp-beginners/thread111222.html
Переменные,значение функции,вспомогательные переменные. C++
1)Даны переменные A,B,C.Изменить их значения,переместив их содержимое из A-в B,B-в C,C-в A,и вывести новые значения переменных A,B,C. 2)Найти значение функции 3x(в шестой степени)-6x(во второй...
Maccив двумерный C++
Дан двумерный массив.Сформировать одномерный массив, каждый элемент которого равен произведению четных положительных элементов соотв. столбца! помогите срочно надо:(
C++ Вычислить z-сумму значений функций http://www.cyberforum.ru/cpp-beginners/thread111198.html
1.Подсчитать количество элементов матриц x(5,5) и y(4,6), удовлетворяющих условию 0<=xij<=1 и 0<=yij<=1 2.Вычислить z-сумму значений функций ...
C++ Переставить в 1-м массиве первый отрицательный и последний положительный элемент местами Переставить в 1-м массиве первый отрицательный и последний положительный элемент местами! подробнее

Показать сообщение отдельно
Dimasio
6 / 6 / 1
Регистрация: 21.10.2012
Сообщений: 213
22.10.2012, 15:47
Цитата Сообщение от alsav22 Посмотреть сообщение
Добавлено через 8 минут
Тут вы что хотите узнать?
C++
1
int a = sizeof(str)/sizeof(*str);
Я хочу узнать количество элементов в массиве. Как я понял мне нужно объявлять пустой массив STR вот так:
C++
1
char ch, fname[200], str[] = "\0";
Далее, когда в него будут записаны числа из файла, этот код поможет посчитать количество элементов в массиве. Этот код рабочий, проверял на совсем простетской программе, реально считает.

Цитата Сообщение от alsav22 Посмотреть сообщение
Добавлено через 2 минуты
И лучше так:
C++
1
char ch, fname[200], str[500] = "\0";
Сделал вот так и убрал код, считающий количество элементов. Прога вылетает в режиме откладки, когда в появляется надпись "нажмите любую клавишу для продолжения" и жмешь кнопку для выхода. А если просто exe запустить, то вылетает сразу после открытия файла. Отладчик выдает такие ошибки:

Run-Time Check Failure #2 - Stack around the variable 'ch' was corrupted.
Run-Time Check Failure #2 - Stack around the variable 'str' was corrupted.
Run-Time Check Failure #2 - Stack around the variable 'fname' was corrupted.

Причем переменные в ошибках постоянно разные.
Вот что говорит откладчик:

"Lab_1.exe" (Win32). Загружено "C:\Users\Димасио\Documents\Visual Studio 2012\Projects\Lab_1\Debug\Lab_1.exe". Символы загружены.
"Lab_1.exe" (Win32). Загружено "C:\Windows\SysWOW64\ntdll.dll". Невозможно найти или открыть файл PDB.
"Lab_1.exe" (Win32). Загружено "C:\Windows\SysWOW64\kernel32.dll". Невозможно найти или открыть файл PDB.
"Lab_1.exe" (Win32). Загружено "C:\Windows\SysWOW64\KernelBase.dll". Невозможно найти или открыть файл PDB.
"Lab_1.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcp110d.dll". Символы загружены.
"Lab_1.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcr110d.dll". Символы загружены.
"Lab_1.exe" (Win32). Загружено "C:\Windows\SysWOW64\apphelp.dll". Невозможно найти или открыть файл PDB.
"Lab_1.exe" (Win32). Загружено "C:\Windows\SysWOW64\cmd.exe". Невозможно найти или открыть файл PDB.
"Lab_1.exe" (Win32). Выгружено "C:\Windows\SysWOW64\cmd.exe"
Run-Time Check Failure #2 - Stack around the variable 'str' was corrupted.
В Lab_1.exe возникло переполнение буфера, что привело к повреждению внутреннего состояния программы. Нажмите кнопку "Прервать", чтобы отладить программу, или кнопку "Продолжить", чтобы завершить программу.

Дополнительные сведения см. в разделе "Инструкции по отладке в случае переполнения буфера".

STATUS_STACK_BUFFER_OVERRUN encountered
Lab_1.exe вызвал срабатывание точки останова.
Программа "[8084] Lab_1.exe" завершилась с кодом -1073740791 (0xc0000409).
Вот мой код.
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
#include "stdafx.h"
#include <fstream>
#include <string> 
#include <conio.h>
using namespace std;
 
int main () 
{ 
char ch, fname[200], str[500] = "\0";
    int c = 0;
cout << "Enter File name and directory: ";
cin >> fname;
ifstream in(fname);
if( !in ){
    cout << "Impossible to open file\nPress any key to exit";
    _getch();
    return 1;
}
cout << "File data:\n";
while(!in.eof() ){
    in.get(ch);
    str[c] = ch;     
    c++;
}
in.close();
    system("pause");
    return 0; 
}
Добавлено через 10 минут
а не может ли быть косяк в том, что у меня винда х64, а visual studio x86?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru