решаемые
Я создаю новый char *ch malloc(strlen)
и зацикливаю эту строку char на char. Затем я копирую его обратно, используя memcpy(ch, &stringpool[index], len)
Конечно, потом free(ch)
.
Надеюсь, заголовок моего вопроса правильный.
У меня есть струнный пул
char **string_pool;
, который инициируется в функции, подобной
string_pool = malloc( sizeof(char *) * 1024);
я получаю строки из stdin и сканирую их в массив
scanf("%[^\n]s", &string_pool[index]);
чтобы я мог распечатать его с помощью printf
printf("gets %s\n", &string_pool[index]);
как я могу
- получить длину string_pool [индекс]
- чтение string_pool [index] char по символу в цикле
Спасибо
Редактировать
Может быть, я должен объяснить это немного больше, это виртуальная машина с виртуальным набором команд и программа типа
push 1
read
gets
следует:
- нажмите 1 в стеке -> пусть x будет 1
- читать stdin как строку в string_pool [x]
- поместить все символы в стек
функции выглядят как
case GETS: {
int index = popv(); // index is already on top of the stack
int strl = strlen(&string_pool[index]);
printf("gets %s with a length of %d\n", &string_pool[index], strl);
// pseudo code
// push each char as integer on the stack
foreach(char in string_pool[index]) push((int)char);
break;
}
case READ: {
int index = popv();
scanf("%[^\n]s", &string_pool[index]);
break;
}
case WRITE: {
int index = popv();
printf("%s", &string_pool[index]);
break;
}
Моя проблема в случае GETS. Я хочу поместить каждый символ как int в стек.