Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.28;
Скачать: CL | DM;

Вниз

Динамическое формирование C-строки с несколькими 0   Найти похожие ветки 

 
Kostafey ©   (2007-10-06 13:19) [0]

В продолжении ветки
http://delphimaster.net/view/15-1191573275/

Имеется C-строка:
 char params[80] =
   "DSN=rjdgis\0"    
   "Database=Dor\0"
   "Server=DB0TKD2J\0";


Далее я хочу формировать ее из параметров комадной строки.
Пробовал по-разному:
void main(int argc,  char *argv[])
{
 if (argc = 4)
 {
   char* clDSN = argv[1];
   char* clDatabase = argv[2];
   char* clServer = argv[3];

   char params[80] = "DSN=";
   strcat(params,clDSN);
   strcat(params,"\0 Database=");
   strcat(params,clDatabase);
   strcat(params,"\0 Server=");  
   strcat(params,clServer);
   strcat(params,"\0");


Но та же strcat увидев \0 прекращает добавлять символы.
В данном случае получиться что-то вроде:
DSN=rjdgisDorDB0TKD2J

Если писать отдельно вместо
strcat(params,"\0 Database=");

strcat(params,"\0");
strcat(params,"Database=");


и т.д. то strcat(params,"\0"); не будет восприниматься и получиться что-то вроде
DSN=rjdgisDatabase=DorServer=DB0TKD2J

Так как же вставить в C-строку несколько символов \0 ?


 
neanderthal   (2007-10-06 13:32) [1]

  char params[80] = "DSN=";
  strcat(params,clDSN);
  strcat(params,"\0 Database=");
  strcat(params,clDatabase);
  strcat(params,"\0 Server=");  
  strcat(params,clServer);
  strcat(params,"\0");



strcat(params,"ab");
strcat(params+3,"cde");
strcat(params+7,"fgh");
params[11]="\0";  //см. ниже


как парсить:

char *p=params;
while(*p)
{
 do_something(p);
 p+=strlen(p)+1;
}


 
Kostafey ©   (2007-10-06 14:32) [2]


> [1] neanderthal   (06.10.07 13:32)


Да, это работает. Спасибо.

 char params[80] = "DSN=";
 strcat(params,clDSN);

 int Marker;

 Marker = strlen(params) + 1;
 strcat(params + Marker, "Database=");
 cout<<endl<<"params = "<<endl;
 Marker += strlen("Database=");
 strcat(params + Marker, clDatabase);
 

 Marker += strlen(clDatabase) + 1;
 strcat(params + Marker, "Server=");
 Marker += strlen("Server=");
 strcat(params + Marker, clServer);  

 Marker += strlen(clServer) + 1;
 params[Marker]="\0";



Страницы: 1 вся ветка

Текущий архив: 2007.10.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
11-1174917530
ElectriC
2007-03-26 17:58
2007.10.28
RichEdit XP


2-1191434154
Riply
2007-10-03 21:55
2007.10.28
Различное поведение в зависимости от юнита.


2-1189885813
vasIZmax
2007-09-15 23:50
2007.10.28
ini-file


2-1191383815
Alex_Y
2007-10-03 07:56
2007.10.28
GetTextExtentPoint


15-1191662383
Kostafey
2007-10-06 13:19
2007.10.28
Динамическое формирование C-строки с несколькими 0