| Автор |
Съобщение |
|
Nekoj drug
Ранг: Минаващ
Регистриран на: Пет Сеп 23, 2005 10:54 pm Мнения: 39
|
 Въпрос за конвертиране в Ц
Проблема ми е следния:
Въвеждам стринг от клавиатурата и искам да получа съответния ASCII код на всеки символ от низа. Да, обаче нещо не става. Ето отрязък от кода:
Опитах и с atol, и с atoll, компилира се, обаче стига до реда за конвертиране и нещо сепрецаква...
Някой има ли идея как да се справя?
_________________ Най-лошото, което може да се случи на две точки, е да не лежат на една права.
|
| Вто Май 08, 2007 1:31 am |
|
 |
|
Nekoj drug
Ранг: Минаващ
Регистриран на: Пет Сеп 23, 2005 10:54 pm Мнения: 39
|
Всъщност, сега като чета, ако разбирам и правилно, atoi() конвертира само символен запис на числа в число, а?
Т.е. ще ми трябва друг метод...Някой да се сеща?
_________________ Най-лошото, което може да се случи на две точки, е да не лежат на една права.
|
| Вто Май 08, 2007 1:40 am |
|
 |
|
Nekoj drug
Ранг: Минаващ
Регистриран на: Пет Сеп 23, 2005 10:54 pm Мнения: 39
|
Нещата не вървят на добре. Ако си говорех сам- иди-дойди. Ама аз вече сам си пиша
Намерих начин да получа кода. Но пак бих се радвал на едно по-грамотно решение от моето:
_________________ Най-лошото, което може да се случи на две точки, е да не лежат на една права.
|
| Вто Май 08, 2007 2:07 am |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Изобщо пишеш някакви глупости и искаш някой да ти отговаря
Какво мислиш че прави тази безмислица atoi([0]); ? защо ти е ASCII символите да ги пишеш в int? ako толкова държиш:
|
| Вто Май 08, 2007 2:33 am |
|
 |
|
Nekoj drug
Ранг: Минаващ
Регистриран на: Пет Сеп 23, 2005 10:54 pm Мнения: 39
|
изпуснал съм едно а:
c[0]=atoi( a[0])
Но си прав. Като цяло въпроса ми не беше от най-умните
Аз направих същото като теб, само че в отделна функция. Защо да е просто, като може да е сложно
Мерси!
_________________ Най-лошото, което може да се случи на две точки, е да не лежат на една права.
|
| Вто Май 08, 2007 2:49 am |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
абе човек, да не мислиш че тип чар е някаква малка буквичка, която мравчиците в процесора пишат на листче? чаровете са 8 битови интове, това е. така че няма какво да получаваш кода на символ - символа е кода си.
|
| Вто Май 08, 2007 8:15 am |
|
 |
|
bobyk
Ранг: Ориентиран
Регистриран на: Пон Яну 09, 2006 11:32 am Мнения: 276 Местоположение: Kozloduy
|
|
| Вто Май 08, 2007 9:11 am |
|
 |
|
Nekoj drug
Ранг: Минаващ
Регистриран на: Пет Сеп 23, 2005 10:54 pm Мнения: 39
|
Трябва ми за един проект в университета. Програмата трябва да работи и с букви на кирилица, като стринга трябва да има съответния вид(определена поредица букви и цифри).Аз самия доста се обърках, затова и писах тук... Не бъдете зли!
_________________ Най-лошото, което може да се случи на две точки, е да не лежат на една права.
|
| Вто Май 08, 2007 9:15 am |
|
 |
|
Balkana
Ранг: Популярен
Регистриран на: Чет Дек 01, 2005 10:42 pm Мнения: 301
|
 Някои програмни езици имат по-строго разграничаване на типовете от Ц  След известно време копаене по този начин, инстинктивно си мислиш за конвертиране ...
|
| Вто Май 08, 2007 10:00 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
може би имат предвид да изкараш текстов низ със числа, нещо от рода на 0х48,0х5е,0х20....
|
| Вто Май 08, 2007 11:08 pm |
|
 |
|
Nekoj drug
Ранг: Минаващ
Регистриран на: Пет Сеп 23, 2005 10:54 pm Мнения: 39
|
Ами не. Задачата ми е да напиша програма за обработка на данните на фирми, като има изискване регистрационния номер да съдържа кирилски букви и цифри в определена последователност. И понеже(това знам от асистента) не сме можели да знаем с каква кодова таблица работи съответния ДОС, трябва да обработваме символите като числа(long). Аз обаче изпробвам с латински букви, т.к. не мога да пиша на кирилица от командния ред на виндоуса.
_________________ Най-лошото, което може да се случи на две точки, е да не лежат на една права.
|
| Чет Май 10, 2007 10:43 am |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
gets() ти връща низ от char което ще рече че е нормална ASCII кодировка 8 бита.
Трябва да ползваш вероятно друга команда за вход за WCHAR вход. Но аз не съм ползвал при дос подобни неща и нямам идея как стоят нещата.
Но след като функцията с която си четеш входа връща 8 битов низ няма смисъл да го преобразуваш в WCHAR.
WCHAR е unsigned int а не long както казваш.
|
| Чет Май 10, 2007 12:15 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
ами точно обратното - понеже не знаеш кодовата таблица НЕ трябва да обработваш символите като числа. например ако искаш да разбереш дали даден символ е цифра, не трябва да го сравняваш с 48-57, а с '0'-'9'. if(c>='0'&&c<='9')... това е проверка дали даден символ е цифра.
|
| Чет Май 10, 2007 1:58 pm |
|
 |
|
Nekoj drug
Ранг: Минаващ
Регистриран на: Пет Сеп 23, 2005 10:54 pm Мнения: 39
|
Не, те ни казаха да обработваме цифрите като long, а аз се задоволявам за сега с int.То всъщност unicode е 2 байта=>ако го използвам, ще трябва да го обработвам като long,нали? Е добре де, как ще стане тази работа, като '0' при компилацията ще си получи съответната ASCII стойност???
_________________ Най-лошото, което може да се случи на две точки, е да не лежат на една права.
|
| Чет Май 10, 2007 9:24 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
на кво пишете? под виндовс си има там едни макроси и типове, които целят инвариантност при смяна на кодовата таблицат. например низовете се слагат в _Т(), а символа има тип TCHAR, като тези неща с разни ифдефове се дефинират различно според това дали има дефинирано _UNICODE и _MBCS.
|
| Чет Май 10, 2007 10:04 pm |
|
|