#arrays #c #struct #strtok
#массивы #c #структура #strtok
Вопрос:
Есть ли какой-либо способ скопировать значение из одного массива в переменную структуры? Вот пример:
У меня есть структура, и в структуре есть эти переменные;
struct example
{
int a;
char b[];
};
и у меня есть массив, имя которого в моей основной функции — «токен». (Сначала в другой функции я использовал strtok для разделения моей строки на токены, а затем я использовал этот массив токенов в своей основной функции).
Теперь мой массив токенов выглядит так:
token[0] = abc;
token[1] = 2;
token[2] = 10;
Теперь моя цель — сопоставить значения этих токенов с переменными моей структуры.
Нравится;
если token [0] == «что-то» (это должна быть строка), тогда выполните int a = 3
если token [0] ==»anotherthing» (это должна быть строка), то выполните int a=2
и
token[1] =b;(Я хочу ввести значение token[1] в массив b)
Как я могу это сделать? Есть ли какие-либо предложения?
Комментарии:
1. Я не могу понять это.
2. что вы имеете в виду
symbol
? вы пытаетесь обновитьint
значение на основеstrcmp
? не совсем понятно, что вы пытаетесь сделать. Минимальный код должен быть хорошим3. обновлено. добавлена дополнительная информация. @IrAM
Ответ №1:
Есть ли какой-либо способ скопировать значение из одного массива в переменную структуры?
Массив C — это последовательность последовательных значений одного и того же типа. Это может быть серия структур, или целых чисел, или символов… любой допустимый тип. Если вы скопируете одно или несколько из этих значений, вы, конечно, можете делать с ними все, что вам нравится, включая присвоение их частям структуры. Если у вас есть:
int intArray[5] = {1, 2, 3, 4, 5};
и структура:
struct Example
{
int start1;
int end1;
int start2;
int end2;
char symbol[];
};
struct Example ex;
затем вы можете присваивать значения из массива частям экземпляра этой структуры так же, как вы бы выполняли любое другое присвоение:
ex.start1 = intArray[0];
ex.end1 = intArray[4];
ex.start2 = intArray[1];
ex.end2 = intArray[3];
Части вашего примера сбивают с толку, потому что неясно, совпадают ли значения в вашем массиве:
token[0] = abc;
token[1] = 2;
token[2] = 10;
Что abc
здесь? Если это int
похоже на другие значения, это нормально, но что это такое и как оно связано с другими значениями, неясно. Некоторые другие языки допускают разные типы значений в одном и том же массиве, но это не относится к C.
Комментарии:
1. кстати, abc — это строковое значение. Потому что первый токен является строкой. но остальные — «да».
2. @Fenikssy Это запутанная часть; C не позволяет вам смешивать строки и целые числа в одном массиве, поэтому вам нужно подумать о том, что вы пытаетесь сделать. Как
token
объявляется? Я понимаю, что это массив, но массив какого типа?