powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Почему не создается стандартный mac-адрес из безточечной записи
13 сообщений из 13, страница 1 из 1
Почему не создается стандартный mac-адрес из безточечной записи
    #39190406
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо написать на простом С. Наверное это актуально и для IP-адреса.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
    unsigned char f[12] ="B25678C57F3E";
    //unsigned char* ff=(unsigned char*)malloc(17*sizeof(unsigned char));
    unsigned char ff[16];
    int k=sizeof(f)/sizeof(f[0]);
    int kk=0;
    int i=0;
    for (i=0; i<k;i++) {
    if ((i==2)||(i==4)||(i==6)||(i==8)||(i==10)) {ff[i+kk]=":";
    kk++; }
    else ff[i+kk]=f[i];
    }
    printf("%i\n",k);
    printf(f);
    printf("\n");
    printf(ff);
    return 0;
}

Выводит лиш первые четыре цыфри, и один разделитель. При выделение памяти динамически тоже самое.
...
Рейтинг: 0 / 0
Почему не создается стандартный mac-адрес из безточечной записи
    #39190408
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слова "null-terminated" тебе ничего не говорят?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему не создается стандартный mac-адрес из безточечной записи
    #39190426
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
мало имел с этим дело (С null terminated).
unsigned char ff[17];
(i=0; i!=NULL;i++) -- что-то поменяет? Ничего
...
Рейтинг: 0 / 0
Почему не создается стандартный mac-адрес из безточечной записи
    #39190428
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stutчто-то поменяет? Ничего
Ага, потому что это только один из примерно трёх багов в твоём коде. Отлаживай.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему не создается стандартный mac-адрес из безточечной записи
    #39190432
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Какого типа оставшийся? ..А это действительно ничего не поменяло
...
Рейтинг: 0 / 0
Почему не создается стандартный mac-адрес из безточечной записи
    #39190434
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Засунь вывод ff внутрь цикла и увидишь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему не создается стандартный mac-адрес из безточечной записи
    #39190449
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
kk++ правильно увеличиватся.
Но почему там только одно двоеточие появляется мне непонятно, и почему третья цыфра в выводе получается d.
Попробывал переделать цыкл так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    int j=0;
    for (j=0; j<17; j++) {
    if ((j==2)||(j==5)||(j==8)||(j=11)||(j==14)) {ff[j]=":"; // ff[i+kk]=":";
    l++; }
    //else ff[i+kk]=f[i];
    else ff[j]=f[j-l];
    printf(ff);
    printf("\n");
    printf("%i\n",l);
    }

Чтобы цыкл был зависим только от длины исходящей строки вообще какой то бесконечный цыкл получается, хотя идея та самая. Но наверное не учитывание длины 17, а только 12 и играет роль в неправильной работе первого кода, хотя на появление лиш первого двоеточия и пары цыфр с двух сторон это точно не должно влиять.
...
Рейтинг: 0 / 0
Почему не создается стандартный mac-адрес из безточечной записи
    #39190466
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
else не надо
...
Рейтинг: 0 / 0
Почему не создается стандартный mac-адрес из безточечной записи
    #39190468
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stutDimitry Sibiryakov,
мало имел с этим дело (С null terminated).
unsigned char ff[17];
(i=0; i!=NULL;i++) -- что-то поменяет? Ничего
null terminated - в переводе "заканчивается нулем", а у тебя чем ff заканчивается?
...
Рейтинг: 0 / 0
Почему не создается стандартный mac-адрес из безточечной записи
    #39190753
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Вы имеете ввиду unsigned char f[12] ="B25678C57F3E\0" -- может быть, забыл что это надо прямо указать.
Ну а как else не надо -- у меня в цыкле две альтернативы. Или двоеточие, или второй вариант -- цыфра.
Не могу ведь я ведь н аодно место в и двоеточие и цыфру ставить, хотя это может нчиего не менять.
Без елза можно обойтись если в ифе написать continue (если в ифе такое возможно), но это будет тоже самое.
...
Рейтинг: 0 / 0
Почему не создается стандартный mac-адрес из безточечной записи
    #39190769
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Сколько байт занимает строка "B25678C57F3E" ?

2. Если к 12 символам добавить 5 двоеточий:
- сколько сиволов будет?
- сколько байт надо для хранения результата?

3. Про else: замени ff[i+kk] = ... на
Код: plaintext
1.
printf("ff[%d+%d] = ...\n", i, kk);


и посмотри что куда ты пишешь
...
Рейтинг: 0 / 0
Почему не создается стандартный mac-адрес из безточечной записи
    #39190815
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stutDima T,
Вы имеете ввиду unsigned char f[12] ="B25678C57F3E\0" -- может быть, забыл что это надо прямо указать.

Не, это как раз не нужно .
...
Рейтинг: 0 / 0
Почему не создается стандартный mac-адрес из безточечной записи
    #39190885
мимо шел....
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
    unsigned char f[12] ="B25678C57F3E";
    //unsigned char* ff=(unsigned char*)malloc(17*sizeof(unsigned char));
    unsigned char ff[18];
    int k=sizeof(f)/sizeof(f[0]);
    int kk=0;
    int i=0;
    for (i=0; i<k;i++) {
    if ((i==2)||(i==4)||(i==6)||(i==8)||(i==10)) {ff[i+kk]=":";
    kk++; }
    ff[i+kk]=f[i];
    kk++;
    ff[18]="\0";
    printf("%i\n",k);
    printf(f);
    printf("\n");
    printf("%s\n",ff);
    return 0;
}
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Почему не создается стандартный mac-адрес из безточечной записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]