crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
enslaver
  опции профиля:
сообщение 3.10.2011, 8:08
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 25.3.2010
Пользователь №: 1565

Спасибо сказали: 0 раз(а)




Репутация:   0  


думаю многим известно начало
int main (int argc, char **arcv){

собственно получаем в argv[0] имя нашей программы, которое возьмем для исследования.

наша задача узнать сколько символов содержится в строке которая находится по argv[0];

Хочу узнать как эту задачу решили бывалые и эксперты.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 3.10.2011, 8:48
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


http://msdn.microsoft.com/en-us/library/aa299386(VS.60).aspx

по меньшей мере есть 2 способа:

1) глянуть значение argc и столько элементов выбирать
2) выбирать элементы, пока argv[i]!=0
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 3.10.2011, 9:30
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


угу, определить не utf-какой ли там подсунули в качестве параметров, то же не кисло бы. От типа кодировки и плясать. Мне так кааэтся
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 3.10.2011, 9:33
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


maint, я так понимаю, что говорим про ascii всё же - ведь передаются параметры из командной строки . В то же время ascii входит в состав utf8 и тут конфликта не будет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 3.10.2011, 9:57
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(Алексей1153 @ 3.10.2011, 15:33) *
maint, я так понимаю, что говорим про ascii всё же - ведь передаются параметры из командной строки . В то же время ascii входит в состав utf8 и тут конфликта не будет

для винды "программа.exe" для студентов нормой становиться. А если учесть, что запуск может быть от балды ярлыком:
c:\user\Мои Документы\Зачет\программа.exe, то вообще караул :). Кроме того запуская, допустим из коммандера произвольного, мы получим вывод argv[0], как ./programm (в линухе так, перегружаться в винду не хочу) или ещё хлеще с полным путем. Так что поля для творчества - море :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 3.10.2011, 9:59
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


maint, это всё к делу не относится ИМХО. Запусти да убедись, либо убеди меня :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 3.10.2011, 11:10
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    printf("len: %d >%s<\n", strlen(argv[0]), argv[0]);
    return 0;
}

Линух, 3апускаю из под mc в однобайтовой кодировке koi8
len: 7 >./test1<

Линух, 3апускаю из под mc в utf-8 переименовав в тест1
len: 11 >./тест1<

в обоих случаях надо обрубать "./". Во втором определять кодировку

Винда (XP). Запускаю из под Far
Цитата
len: 33 >D:\SRC\untitled\release\test1.exe<

Надо обрубать путь, поскольку он не является именем программы


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 3.10.2011, 11:34
Сообщение #8


фрилансер
******

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


я ничего не понял, где тут битые кодировки и при чём тут путь, который якобы надо обрубать ? :) Да да, каким боком сюда приплёлся путь, про который слова не было
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 3.10.2011, 11:46
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(Алексей1153 @ 3.10.2011, 17:34) *
я ничего не понял, где тут битые кодировки и при чём тут путь, который якобы надо обрубать ? :) Да да, каким боком сюда приплёлся путь, про который слова не было

тьфу, зарапортовался, заскок, что надо было длину имени программы вычислить :lol:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 3.10.2011, 11:55
Сообщение #10


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


я, честно говоря, вообще не понимаю, в чём суть вопроса: чем не устраивают стандартные методы работы со строками? что за проблема определить длину строки (строка заканчивается нулём)?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 13.7.2025, 6:45