Помогите отладить простенькую прогу.
Надо содержимое буфера сравнить с 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
> strcpy(s,"0x01\n");Кажись, не так кладёшь. Нужно strcpy(s,"\001\n");
>Помогите отладить простенькую прогу.
>Надо содержимое буфера сравнить с 0x01 и записать yes в случае
>совпадения.попробуй так strcpy(s,"\001\n");
тока у тебя все равно будет переполнение буфера ;-)))
>Помогите отладить простенькую прогу.
>Надо содержимое буфера сравнить с 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");
> почему все время при запуске выдает
>: no1. Вы не понимаете различия типов данных char* и int. Читайте доку.
2. Если вы хотите сравнить строки, нужно использовать ф-ю strcmp, а не оператор сравнения. Если хотите использовать оператор ==, то вам нужно строку будет переводить в тип int.
Уточню немного:>>Помогите отладить простенькую прогу.
>>Надо содержимое буфера сравнить с 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.