Отговори на тема  [ 21 мнения ]  Отиди на страница 1, 2  Следваща
Въпрос за конвертиране в Ц 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Сеп 23, 2005 10:54 pm
Мнения: 39
Мнение Въпрос за конвертиране в Ц
Проблема ми е следния:
Въвеждам стринг от клавиатурата и искам да получа съответния ASCII код на всеки символ от низа. Да, обаче нещо не става. Ето отрязък от кода:
Код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
   
    char a[8];
    int c[8];
    gets(a);
   c[0]=atoi([0]);
}

Опитах и с atol, и с atoll, компилира се, обаче стига до реда за конвертиране и нещо сепрецаква...
Някой има ли идея как да се справя?

_________________
Най-лошото, което може да се случи на две точки, е да не лежат на една права.


Вто Май 08, 2007 1:31 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Сеп 23, 2005 10:54 pm
Мнения: 39
Мнение 
Всъщност, сега като чета, ако разбирам и правилно, atoi() конвертира само символен запис на числа в число, а?
Т.е. ще ми трябва друг метод...Някой да се сеща?

_________________
Най-лошото, което може да се случи на две точки, е да не лежат на една права.


Вто Май 08, 2007 1:40 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Сеп 23, 2005 10:54 pm
Мнения: 39
Мнение 
Нещата не вървят на добре. Ако си говорех сам- иди-дойди. Ама аз вече сам си пиша :D
Намерих начин да получа кода. Но пак бих се радвал на едно по-грамотно решение от моето:
Код:
int convert(char a)
{   
int k=a;
return a;
}

_________________
Най-лошото, което може да се случи на две точки, е да не лежат на една права.


Вто Май 08, 2007 2:07 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Изобщо пишеш някакви глупости и искаш някой да ти отговаря :)

Код:
int main(){
   
    char a[8];
    int c[8];
    gets(a);
   c[0]=atoi([0]);
}


Какво мислиш че прави тази безмислица atoi([0]); ?

защо ти е ASCII символите да ги пишеш в int?
ako толкова държиш:
Код:
for ( int i=0; i<8; i++ ) c[i] = (int)a[i];


Вто Май 08, 2007 2:33 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Сеп 23, 2005 10:54 pm
Мнения: 39
Мнение 
изпуснал съм едно а:
c[0]=atoi(a[0])
Но си прав. Като цяло въпроса ми не беше от най-умните :oops:
Аз направих същото като теб, само че в отделна функция. Защо да е просто, като може да е сложно :lol:
Мерси!

_________________
Най-лошото, което може да се случи на две точки, е да не лежат на една права.


Вто Май 08, 2007 2:49 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
абе човек, да не мислиш че тип чар е някаква малка буквичка, която мравчиците в процесора пишат на листче? чаровете са 8 битови интове, това е. така че няма какво да получаваш кода на символ - символа е кода си.


Вто Май 08, 2007 8:15 am
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Пон Яну 09, 2006 11:32 am
Мнения: 276
Местоположение: Kozloduy
Мнение 
И какъв е смисъла да преливаш от пусто в празно, глупава е самата идея не само реализацията. Не виждам никакъв смисъл :?: :?: :?: :?


Вто Май 08, 2007 9:11 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Сеп 23, 2005 10:54 pm
Мнения: 39
Мнение 
Трябва ми за един проект в университета. Програмата трябва да работи и с букви на кирилица, като стринга трябва да има съответния вид(определена поредица букви и цифри).Аз самия доста се обърках, затова и писах тук... Не бъдете зли!

_________________
Най-лошото, което може да се случи на две точки, е да не лежат на една права.


Вто Май 08, 2007 9:15 am
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Чет Дек 01, 2005 10:42 pm
Мнения: 301
Мнение 
:) Някои програмни езици имат по-строго разграничаване на типовете от Ц :) След известно време копаене по този начин, инстинктивно си мислиш за конвертиране ...


Вто Май 08, 2007 10:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
Dr.UmriGo написа:
Трябва ми за един проект в университета. Програмата трябва да работи и с букви на кирилица, като стринга трябва да има съответния вид(определена поредица букви и цифри).Аз самия доста се обърках, затова и писах тук... Не бъдете зли!

може би имат предвид да изкараш текстов низ със числа, нещо от рода на 0х48,0х5е,0х20....


Вто Май 08, 2007 11:08 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Сеп 23, 2005 10:54 pm
Мнения: 39
Мнение 
Цитат:
оже би имат предвид да изкараш текстов низ със числа, нещо от рода на 0х48,0х5е,0х20....

Ами не. Задачата ми е да напиша програма за обработка на данните на фирми, като има изискване регистрационния номер да съдържа кирилски букви и цифри в определена последователност. И понеже(това знам от асистента) не сме можели да знаем с каква кодова таблица работи съответния ДОС, трябва да обработваме символите като числа(long). Аз обаче изпробвам с латински букви, т.к. не мога да пиша на кирилица от командния ред на виндоуса.

_________________
Най-лошото, което може да се случи на две точки, е да не лежат на една права.


Чет Май 10, 2007 10:43 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
gets() ти връща низ от char което ще рече че е нормална ASCII кодировка 8 бита.
Трябва да ползваш вероятно друга команда за вход за WCHAR вход. Но аз не съм ползвал при дос подобни неща и нямам идея как стоят нещата.
Но след като функцията с която си четеш входа връща 8 битов низ няма смисъл да го преобразуваш в WCHAR.
WCHAR е unsigned int а не long както казваш.


Чет Май 10, 2007 12:15 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
Dr.UmriGo написа:
Цитат:
оже би имат предвид да изкараш текстов низ със числа, нещо от рода на 0х48,0х5е,0х20....

Ами не. Задачата ми е да напиша програма за обработка на данните на фирми, като има изискване регистрационния номер да съдържа кирилски букви и цифри в определена последователност. И понеже(това знам от асистента) не сме можели да знаем с каква кодова таблица работи съответния ДОС, трябва да обработваме символите като числа(long). Аз обаче изпробвам с латински букви, т.к. не мога да пиша на кирилица от командния ред на виндоуса.

ами точно обратното - понеже не знаеш кодовата таблица НЕ трябва да обработваш символите като числа. например ако искаш да разбереш дали даден символ е цифра, не трябва да го сравняваш с 48-57, а с '0'-'9'. if(c>='0'&&c<='9')... това е проверка дали даден символ е цифра.


Чет Май 10, 2007 1:58 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Сеп 23, 2005 10:54 pm
Мнения: 39
Мнение 
Цитат:
WCHAR е unsigned int а не long както казваш
Не, те ни казаха да обработваме цифрите като long, а аз се задоволявам за сега с int.То всъщност unicode е 2 байта=>ако го използвам, ще трябва да го обработвам като long,нали?
Цитат:
if(c>='0'&&c<='9')
Е добре де, как ще стане тази работа, като '0' при компилацията ще си получи съответната ASCII стойност???

_________________
Най-лошото, което може да се случи на две точки, е да не лежат на една права.


Чет Май 10, 2007 9:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
на кво пишете? под виндовс си има там едни макроси и типове, които целят инвариантност при смяна на кодовата таблицат. например низовете се слагат в _Т(), а символа има тип TCHAR, като тези неща с разни ифдефове се дефинират различно според това дали има дефинирано _UNICODE и _MBCS.


Чет Май 10, 2007 10:04 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 21 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни