The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Простенькая прога "
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Простенькая прога "  
Сообщение от Elyad on 10-Окт-06, 10:03 
Помогите отладить простенькую прогу.
Надо содержимое буфера сравнить с 0x01 и записать yes  в случае совпадения.
    char s[2];
    int n=0x01, d;
    
    strcpy(s,"0x01\n");
    d=atoi(s);
    if (d==0x01)  puts("yes");
    else puts("no");

   или
    char s[2];
    strcpy(s,"0x01\n");
    if (s[0]==0x01)   puts("yes");
    else puts("no");
     почему все время при запуске выдает  :   no

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Простенькая прога "  
Сообщение от Sloboda (??) on 10-Окт-06, 10:33 
>    strcpy(s,"0x01\n");

Кажись, не так кладёшь. Нужно strcpy(s,"\001\n");

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Простенькая прога "  
Сообщение от NuINu (??) on 10-Окт-06, 10:44 
>Помогите отладить простенькую прогу.
>Надо содержимое буфера сравнить с 0x01 и записать yes  в случае
>совпадения.

попробуй так strcpy(s,"\001\n");

тока у тебя все равно будет переполнение буфера ;-)))

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Простенькая прога "  
Сообщение от Sergey (??) on 10-Окт-06, 11:13 
>Помогите отладить простенькую прогу.
>Надо содержимое буфера сравнить с 0x01 и записать yes  в случае
>совпадения.
>    char s[2];
>    int n=0x01, d;
>
>    strcpy(s,"0x01\n");
длина этой строки будет 5 байт.
>    d=atoi(s);
>    if (d==0x01)  puts("yes");
>    else puts("no");

все это в корне не верно.

>
>   или
>    char s[2];
>    strcpy(s,"0x01\n");
>    if (s[0]==0x01)   puts("yes");
тут идет сравнение первого байта, который равен коду символа '0'

>    else puts("no");
>     почему все время при запуске выдает  
>:   no

1. Вы не понимаете различия типов данных char* и int. Читайте доку.
2. Если вы хотите сравнить строки, нужно использовать ф-ю strcmp, а не оператор сравнения. Если хотите использовать оператор ==, то вам нужно строку будет переводить в тип int.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Простенькая прога "  
Сообщение от Sergey (??) on 10-Окт-06, 11:43 
Уточню немного:

>>Помогите отладить простенькую прогу.
>>Надо содержимое буфера сравнить с 0x01 и записать yes  в случае
>>совпадения.
>>    char s[2];
>>    int n=0x01, d;
>>
>>    strcpy(s,"0x01\n");
>длина этой строки будет 5 байт + 1 байт для символа 0x00.
>>    d=atoi(s);
>>    if (d==0x01)  puts("yes");
>>    else puts("no");
>

Фраза "все это в корне не верно" относится к нижеприведенному коду.

> все это в корне не верно.
>
>>
>>   или
>>    char s[2];
>>    strcpy(s,"0x01\n");
>>    if (s[0]==0x01)   puts("yes");
>тут идет сравнение первого байта, который равен коду символа '0'
>
>>    else puts("no");
>>     почему все время при запуске выдает  
>>:   no
>
>1. Вы не понимаете различия типов данных char* и int. Читайте доку.
>
>2. Если вы хотите сравнить строки, нужно использовать ф-ю strcmp, а не
>оператор сравнения. Если хотите использовать оператор ==, то вам нужно строку
>будет переводить в тип int.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру