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

Не выходит записать данные в массив - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сравнение двух строк http://www.cyberforum.ru/cpp-beginners/thread15539.html
Здравствуйте! возникла у меня небольшая проблема со сравнением двух строк разных типов. А точнее - wchar_t и char*. Понимаю, что просто сравнивать их в принципе бессмысленно. Перепробовал уже кучу вариантов, больше ничего в голову не приходит в принципе. Может, кто-нибудь уже сталкивался с подобной проблемой и может подсказать, что делать-то?
C++ Замена строчной буквы на заглавную Вобщем требуется написать программу (Visual C++ 2008 Express Edition), которая открывает текстовый файл-список, содержащий имена файлов по одному на строке. Программа анализирует содержимое файла и устраняет простейшую ошибку – строчная буква в начале предложения. Незнаю как организовать замену строчной буквы на заглавную, подскажите пожалуйста ка это сделать. http://www.cyberforum.ru/cpp-beginners/thread15514.html
C++ Чтение файла и вывод его содержимого на экран
помогите разобраться с чтением файла и выводом его содержимого на экран... а то что ни как не получается... запутался... :wall:
За один просмотр символов строки найти все самые длинные слова, символы в которых идут в строгом возрастании кодов C++
Есть задача: Строка состоит из слов. За один просмотр символов строки найти все самые длинные слова, символы в которых идут в строгом возрастании кодов, и занести их в новую строку. Слова в новой строке должны разделяться ровно одним пробелом. При написании программы использовать нуль–терминированные строки и работать только с типом char *. Тему строк толком не объяснили. Как проверить, что...
C++ Ссылка на функцию класса (не указатель) http://www.cyberforum.ru/cpp-beginners/thread15498.html
можно ли делать ссылки на функции класса? например класс: class cdPolygon2D : public draw { public: static cdPolygon2D *Pcurrent; points2D *Phead; points2D *Pcur; points2D *Pend;
C++ Точность.Тип double Вопрос такой. Пишу программу, в которой имеется цикл: double t=0, dt = 0.000001; t = t + dt; cout << "t --> " << t << endl << endl; if(t==0.000005){ break; } подробнее

Показать сообщение отдельно
Вадимиус
0 / 0 / 0
Регистрация: 10.11.2008
Сообщений: 13
10.11.2008, 17:58     Не выходит записать данные в массив
Чтобы не усложнять и так непростой код я привожу только те модули, которые тут свящаны напрямую, без дополнительного модуля сканера, по идее ошиька в этих где-то...
Код
// tesout.cpp - тестовый вывод информации о лексемах

#include <fstream.h>
#include <stdio.h>
#include "scaner_ext.h"
#include <cstring>

void fprintlex(FILE* f) 
{

  char* lcs;
  char* lvs;
  char* lts;

  switch(lc) 
   {
    case lexPlus:       lcs="lexPlus";      lvs="+";  break;
    case lexAssign:     lcs="lexAssign";    lvs="=="; break; // :=
    case lexComma:      lcs="lexComma";     lvs=",";  break;
    case lexSlash:      lcs="lexSlash";     lvs="/";  break;
    case lexColon:      lcs="lexColon";     lvs=":";  break;
    case lexEQ:         lcs="lexEQ";        lvs="=";  break;
    case lexEof:        lcs="lexEof";       lvs="End_Of_File"; break;
    case lexFloat:      lcs="lexFloat";     lvs=lv;   break;
    case lexGE:         lcs="lexGE";        lvs=">="; break;
    case lexGT:         lcs="lexGT";        lvs=">";  break;
    case lexId:         lcs="lexId";        lvs=lv;   break;
    case lexInt:        lcs="lexInt";       lvs=lv;   break;
    case lexLE:         lcs="lexLE";        lvs="<="; break;
    case lexLftRndBr:   lcs="lexLftRndBr";  lvs="(";  break;
    case lexLftSqBr:    lcs="lexLftSqBr";   lvs="[";  break;
    case lexLT:         lcs="lexLT";        lvs="<";  break;
    case lexStar:       lcs="lexStar";      lvs="*";  break;
    case lexString:     lcs="lexString";    lvs=lv;   break;
    case lexSemicolon:  lcs="lexSemicolon"; lvs=";";  break;
    case lexRghRndBr:   lcs="lexRghRndBr";  lvs=")";  break;
    case lexRghSqBr:    lcs="lexRghSqBr";   lvs="]";  break;
    case lexSkip:       lcs="lexSkip";      lvs=" ";  break;
    case lexMinus:      lcs="lexMinus";     lvs="-";  break;
	case lexMark:      lcs="lexMark";     lvs=lv;	  break;
 
	case kwProgram:	lcs="KWPROGRAM";  lvs=lv;   break;
	case kwBegin:	lcs="KWBEGIN";  lvs=lv;   break;
    case kwEnd:		lcs="KWEND";    lvs=lv;   break;
    case kwGoto:	lcs="KWGOTO";   lvs=lv;   break;
    case kwOr:		lcs="KWOR";     lvs=lv;   break;
    case kwIf:		lcs="KWIF";     lvs=lv;   break;
	case kwInput:	lcs="KWINPUT";	lvs=lv;   break;
	case kwOutput:	lcs="KWOUTPUT";	lvs=lv;   break;
	case kwDo:		lcs="KWDO";		lvs=lv;   break;
	case kwTo:		lcs="KWTO";		lvs=lv;   break;
	case kwNext:	lcs="KWNEXT";	lvs=lv;   break;
	case kwThen:	lcs="KWTHEN";	lvs=lv;   break;
	case kwAnd:		lcs="KWAND";	lvs=lv;   break;
	case kwNot:		lcs="KWNOT";	lvs=lv;   break;
  
  default:      lcs="nonprinted lex class"; lvs=lv;
  }
  
//header
  if (line==1){
    fprintf(f, "Строка\t Подстрока \t Код лексемы \n");
	fprintf(f, "\n");
  };
   
//для индексации констант
  if ((column==0)&&((lc==lexFloat)||(lc==lexInt))){ 
  fprintf(f, " %-3d \t %-10s \t %-7s %-3d\n", tmpline, lvs, lcs, con_ind);  
  }
  else if ((lc==lexFloat)||(lc==lexInt)){
	  fprintf(f, " %-3d \t %-10s \t %-7s %-3d\n", line, lvs, lcs, con_ind); }; 
  
//для индексации идентификаторов
	  if ((column==0)&&(lc==lexId)){ if (lv=="lab01") {lts=lv;} cout<<"VAL:"<<lts<<'/n';   //ВОТ ЗДЕСЬ НУЖНО ПРИСВОИТЬ LTS ЗНАЧЕНИЕ LVS!!!!!!!!!!!!!!!!!!!!!!!!!
  fprintf(f, " %-3d \t %-10s \t %-7s %-3d\n", tmpline, lvs, lcs, id_ind);  
  }
  else if (lc==lexId){
	  fprintf(f, " %-3d \t %-10s \t %-7s %-3d\n", line, lvs, lcs, id_ind); };

//обычный вывод
  if ((column==0)&&(lc!=lexId)&&(lc!=lexFloat)&&(lc!=lexInt)){
  fprintf(f, " %-3d \t %-10s \t %-7s \n", tmpline, lvs, lcs);  
  }
	else if ((lc!=lexId)&&(lc!=lexFloat)&&(lc!=lexInt)){
		fprintf(f, " %-3d \t %-10s \t %-7s \n", line, lvs, lcs); };

		
		
//footer		
	if (lc == lexEof) {fprintf(f, "\n");
		fprintf(f, "Строка\t Подстрока \t Код лексемы \n");
		con_ind=0;
		fprintf(f, "Array! ! : %c \n", lts);
	};


}
Код
#ifndef __scaner_ext__
#define __scaner_ext__

// scaner_ext.h - экспортируемые объекты сканера
#include "scaner_type.h"

void nxl(void);				// используемая всеми функция взятия следующей лексемы
extern lc_type     lc;		// класс лексемы (scaner_data)
extern char  lv[];			// значение лексемы (scaner_data)
extern int line,			// номер текущей строки
           column,			// номер текущего столбца
		   tmpline,			// номер временной строки (-1 ошибка)
		   con_ind,
		   id_ind;

extern FILE  *infil;
#endif
Код
#ifndef __scaner_data__
#define __scaner_data__

// scaner_ext.h - описания общих данных, используемых сканером

#include "scaner_type.h"

int const buf_size = 256;	// размер буфера под значение лексемы
static int   si;			// читаемый символ
lc_type     lc;				// класс лексемы
char  lv[buf_size];			// значение лексемы
static int i_lv;			// текущая позиция при наборе лексемы
int line,					// номер текущей строки
    column,					// позиция в текущей строке
	tmpline,				// номер текущей строки в начале позиционирования
	con_ind,				// индекс в таблице констант
	id_ind;				// индекс в таблице идентификаторов
FILE    *infil;
#endif
 
Текущее время: 12:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru