
03.11.2009, 17:23
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
Вообще \\ это сишная запись символа \
т.е. сишная запись C:\\dir\\ после компила превратится в C:\dir\ это всеголишь экранирование слеша. А вот винда хавает разделитель \ хотя и против \\ ничего не имеет.
Ну а если нужно всётаки иметь формат \\ то просто пробегайся по всем элементам и копируй из во второй буфер, а если встретится \ то 2 раза повторяй его
|
|
|

03.11.2009, 17:23
|
|
Познавший АНТИЧАТ
Регистрация: 23.08.2007
Сообщений: 1,237
С нами:
9851426
Репутация:
1676
|
|
А зачем получать текущую директорию? Если предполагается, что файл лежит в папке с программой, то можно просто имя файла указать вроде...
|
|
|

03.11.2009, 17:29
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
С нами:
9270510
Репутация:
519
|
|
не думай просто вставь эту строку =)
Если сделать:
char buff[256];
FILE * open = fopen(dir,"r")
while(fgets(buff,255,open))
{
printf(buff);
}
программа не конпелится, и вылетает.
Ну а если нужно всётаки иметь формат \\ то просто пробегайся по всем элементам и копируй из во второй буфер, а если встретится \ то 2 раза повторяй его
можна примерчик?)
А зачем получать текущую директорию? Если предполагается, что файл лежит в папке с программой, то можно просто имя файла указать вроде...
char buff[256];
FILE * open = fopen("file.txt","r")
while(fgets(buff,255,open))
{
printf(buff);
}
программа вылетает и не конпелицо.
|
|
|

03.11.2009, 17:33
|
|
Познавший АНТИЧАТ
Регистрация: 23.08.2007
Сообщений: 1,237
С нами:
9851426
Репутация:
1676
|
|
А разве printf не предполагает наличие формата первым аргументом?
|
|
|

03.11.2009, 17:34
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
С нами:
9270510
Репутация:
519
|
|
printf("%s",buff);
такая же фигня
|
|
|

03.11.2009, 17:40
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
Код:
char buff[256];
FILE * f;
GetCurrentDirectory(256, buff);
strcat(buff, "\\file.txt");
f = fopen(buff,"r");
if (f)
{
while(fgets(buff,255,f))
{
printf("%s\n",buff);
}
fclose(f);
}
|
|
|

03.11.2009, 17:51
|
|
Познающий
Регистрация: 16.07.2008
Сообщений: 82
С нами:
9379631
Репутация:
142
|
|
программа вылетает и не конпелицо.

|
|
|

03.11.2009, 18:05
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
С нами:
9270510
Репутация:
519
|
|
Что смешного?
пограмма вылетала в файл dbghook.c указывая на строку _debugger_hook_dummy = 0;
|
|
|

03.11.2009, 17:59
|
|
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
С нами:
9270510
Репутация:
519
|
|
slesh, спс.
И последний вопрс (гна єти два часа))))
Хочу защитится от переполнения буффера.
юзаю фгетс:
Код:
int main ()
{
char buf[154];
fgets(buf,sizeof(buf),stdin);
if(strcmp(LowerCase(buf),"help") == 0)
{
printf("%s","OK");
}
system("pause");
return 0;
}
но из за этого строка не преобразовуеться в нижый регистер.
как быть?
Последний раз редактировалось slesh; 03.11.2009 в 18:30..
Причина: [code] КОД [/code]
|
|
|

03.11.2009, 18:28
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
я вот юзаю самописную функцию для перевода буфера в нижний регистр. Понимает ткоа англ буквы
Код:
void my_LowCase(char * buf)
{
while (buf[0])
{
if (buf[0]>='A' && buf[0]<='Z')
{
buf[0] += 32;
}
buf++;
}
return;
}
2 -m0rgan- оформляй код в теги [ CODE ]
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|