Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: Ппц, неужели нормально назвать тему нельзя было?
Старый 29.07.2014, 16:16   #1
Tanot
Новичок
Джуниор
 
Регистрация: 29.07.2014
Сообщений: 2
По умолчанию получить полный путь к файлу (простите если боян)

Доброго времени суток! Думаю где-то уже отвечали на такое но гугиль найти такое не помог. Нужно получить полный путь к файлу, переданный в качестве параметра командной строки, и использовать его для открытия файла и дальнейших манипуляций...
Вот мой кодец:
Код:
#include "stdafx.h"
#include <locale.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <math.h>
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL,"RUS");
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	char *s,*s1,sc[7];
	s=(char*)argv[1];
	int i=0;
	CharToOem(argv[1],s1);
	while(s1[i]!=0){
		printf("%c  %i\n",s1[i],s1[i]);
		i++;
	}
	FILE *f=fopen(s1,"r");
	if(f!=NULL){
		fscanf(f,"s",sc);
		printf("%s",sc);
	}
	else{
		printf("NO");
	}
	//[/преобразуем используя CharToOem]
	_getch();
	for(int t=1;t<argc;t++){
		while(s[i]!=0){
			printf("%c",(s[i+1]==4)?s[i]-80:s[i]);//wcstombs_s, _wcstombs_s_l
			i+=2;
		}
		printf("\n");
		i+=2;
	}
	//[/вручную просматриваем _tchar: там четные поля-символы, нечетные, видимо, номера кодовых страниц]
	_getch();
	return 0;
}
т.е. нужно в любом случае изменять код русских символов, чтобы fopen могла их воспринимать.

ps вторую часть вывел сам; странно что CharToOem сразу не делает все хорошо;

вопщем вопрос такой: как? что? почему? можно сделать все хорошо и красиво

psps наличие или отсутствие следующих строчек на функционирование не повлияло
setlocale(LC_ALL,"RUS");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Tanot вне форума Ответить с цитированием
Старый 29.07.2014, 16:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
переданный в качестве параметра командной строки
А зачем? Если ты передаешь имя файла в параметре считается что он лежит либо в каталоге с прогой либо в каталогах, описанных в переменной окружения с именем PATH.
или ты имеешь ввиду что нужно поиском по всем дискам и каталогам пройтись и найти файл с таким именем?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.07.2014, 16:48   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
т.е. нужно в любом случае изменять код русских символов, чтобы fopen могла их воспринимать.
Зачем? утф8 фопен понимает, для широких есть _вфопен, ну в конец есть
Цитата:
fopen supports Unicode file streams. To open a Unicode file, pass a ccs flag that specifies the desired encoding to fopen, as follows.
fopen(&fp, "newfile.txt", "rt+, ccs= encoding ");
Allowed values of encoding are UNICODE, UTF-8, and UTF-16LE.
p51x вне форума Ответить с цитированием
Старый 30.07.2014, 00:42   #4
Tanot
Новичок
Джуниор
 
Регистрация: 29.07.2014
Сообщений: 2
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Зачем? утф8 фопен понимает, для широких есть _вфопен, ну в конец есть
Вах я тормоз! Уже начал мучить wcstombs_s, а про функцию сразу работающую с таким форматом не подумал.

Кстати а ВЫ случаем не осведомлены почему просто непона_перегружали fopen по самые... чтоб проще жилось?

Ах да! Огромное спасибо!

Последний раз редактировалось Tanot; 30.07.2014 в 00:43. Причина: лапух я
Tanot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi, InterBase, BackUp. Полный, относительный путь к файлу. Антон Лысенко Помощь студентам 0 20.05.2013 00:07
Из процесса получить полный путь к ехе файлу. Ozerich Общие вопросы Delphi 4 08.08.2008 12:12
Как узнать полный путь к *.ехе файлу SeЯgey Помощь студентам 3 27.05.2008 09:46
Как получить полный путь к файлу, который был послан на принтер? Stilet Общие вопросы Delphi 7 29.02.2008 17:49
как в memo выводит полный путь к файлу? Файлом является данная программа. Alar Компоненты Delphi 0 29.10.2006 23:24