powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа со structur в си
10 сообщений из 10, страница 1 из 1
Работа со structur в си
    #39152928
t111к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Есть структура в си. При обращении к ней выводит неправильный результат. Как сделать, чтобы выводился правильный результат?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
char IMEIsoed[15]="";
struct struc1
{
char kolsimv[15];
};
struct struc1 n22[1000];

//......
if ((buffer[0]=='#')&&(buffer[1]=='L')&&(buffer[2]=='#'))
{
  strcpy(n22[i].kolsimv,"");
  strcpy(n22[i].kolsimv,IMEIsoed);
}
printf("%s%u\n"," I simvolov - ", i);
printf("%s%s\n"," Stroka simvolov - ", n22[i].kolsimv);
//......


Результат:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    
 
    При  занесении
    I simvolov - 0
    Stroka simvolov - 869158006077000

    I simvolov - 1
    Stroka simvolov - 869158006077001

    I simvolov - 2
    Stroka simvolov - 869158006077002

    При считывании данных
    Isimvolov - 0
    Stroka simvolov - 869158006077000869158006077001869158006077002

    Isimvolov - 1
    Stroka simvolov - 869158006077001869158006077002
 
    Isimvolov - 2
    Stroka simvolov - 869158006077002
...
Рейтинг: 0 / 0
Работа со structur в си
    #39152933
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто нибудь, что нибудь понял? Лично я - нет.
...
Рейтинг: 0 / 0
Работа со structur в си
    #39152936
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю, что автор про разницу между СТРОКА ASCIZ и МАССИВ символов даже не слышал.

Т.ч., пусть идет читает любую книжку по C до просветления. Что такое СТРОКА, а что такое МАССИВ. И что одно не равно другому. Ну заодно, как расшифровывается абривиатура ASCI Z
...
Рейтинг: 0 / 0
Работа со structur в си
    #39152941
t111к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что непонятно? Заношу так
Код: plaintext
1.
2.
    strcpy(n22[i].kolsimv,"");
    strcpy(n22[i].kolsimv,IMEIsoed);


когда считываю для первого элемента после занесения
Код: plaintext
1.
  I simvolov - 0
    Stroka simvolov - 869158006077000
когда считываю для второго элемента после занесения
Код: plaintext
1.
 I simvolov - 1
    Stroka simvolov - 869158006077001
когда считываю для третьего элемента после занесения
Код: plaintext
1.
I simvolov - 2
    Stroka simvolov - 869158006077002
Пока правильно
Пытаюсь опять считать 1,2, 3 элемент
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Isimvolov - 0
    Stroka simvolov - 869158006077000869158006077001869158006077002

    Isimvolov - 1
    Stroka simvolov - 869158006077001869158006077002
 
    Isimvolov - 2
    Stroka simvolov - 869158006077002
Что не совсем правильно.
...
Рейтинг: 0 / 0
Работа со structur в си
    #39152970
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
t111кКак сделать, чтобы выводился правильный результат?
для завершающего нуля кто будет место в строке выделять, Пушкин?
Код: plaintext
1.
2.
3.
4.
5.
6.
char IMEIsoed[16]="";
    struct struc1
    {
    char kolsimv[16];
    };
    struct struc1 n22[1000];


и тему надо назвать не "работа со structur в си", а "работа со строками в си".
...
Рейтинг: 0 / 0
Работа со structur в си
    #39152977
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
t111к, строка должна заканчиваться нулём.
У тебя массив, 15хN, в памяти оно лежит одним куском. Когда ты пишешь первую строчку, она кладётся в первые 15 байт, когда вторую - в следующие 15 байт, _сразу_ за первыми. Т.е. между ними нету "пробела". Поэтом си думают, что это одна строка.
...
Рейтинг: 0 / 0
Работа со structur в си
    #39152982
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
t111к,

Тут
Код: plaintext
1.
if ((buffer[0]=='#')&&(buffer[1]=='L')&&(buffer[2]=='#'))



убери все скобки вокрук термов в коньюнкции.
...
Рейтинг: 0 / 0
Работа со structur в си
    #39152988
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
t111кА что непонятно?
Непонятно почему ты ожидаешь другой результат, сначала запихивая 16 байт в массив размером
15, а потом, естественно, затирая терминатор на следующей итерации.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работа со structur в си
    #39153039
t111к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да спасибо большое. Вы правы. Нужно было
Увеличить на 1 размерность и занести символ окончания строки
Код: plaintext
1.
2.
3.
4.
5.
6.
 char IMEIsoed[16]="";
	    struct struc1{
	          char kolsimv[16];

	    }; 
            strcat(IMEIsoed,"\0");
...
Рейтинг: 0 / 0
Работа со structur в си
    #39153048
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
t111кНужно было Увеличить на 1 размерность и занести символ окончания строки

Нет, не нужно. Вызов strcat(IMEIsoed,"\0"); так же бессмыслен как и strcpy(n22[i].kolsimv,"");
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа со structur в си
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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