Как я могу сбросить множество строк на языке C?

StackOverflow https://stackoverflow.com/questions/1514586

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть петля, которая заполняет "char array_of_strings [100] [100];" В какой -то момент я хочу иметь возможность чистить его со всех добавленных до сих пор строк и начать добавлять из позиции 0. Как я могу очистить/остановить его в C?

Спасибо

Это было полезно?

Решение

Предполагая, что вы на самом деле используете массив в качестве строк, тогда что -то подобное должно работать:

int i;
for (i=0; i<100; i++)
   array_of_strings[i][0] = 0;

Конечно, вы не рассматриваете свои данные как строки, то вам, возможно, придется взглянуть на что -то вроде MEMSE.

Другие советы

Вы можете использовать функция MEMSET Чтобы установить все символы обратно на ноль.

PS Использование двухмерного массива довольно нетрадиционно для работы со строками. Попробуйте двигаться к динамическому распределению отдельных строк.

Эта структура данных действительно не имеет неотъемлемой структуры. Вы в основном сбрасываете его, притворяясь, что в этом ничего нет.

У вас есть какой -то счетчик, который говорит вам, какие из струн вы населяете, верно? Установите его на ноль. Сделанный.

memset(array_of_strings, 0, sizeof(array_of_strings));

Это чище, чем размещение волшебного числа для размера там, и меньше шансов сломаться по дороге, когда кто -то меняет размер вашего массива струн. Поскольку вы знаете размер массива во время компиляции с использованием SizeOF, будет работать.

Вы также можете использовать BZERO, что очень похоже на MEMSET, но только для нуля. На некоторых платформах Bzero может быть быстрее, чем MEMSET, но, честно говоря, обе функции настолько быстрые, расщепление волос здесь глупо.

bzero(array_of_strings, sizeof(array_of_strings));

Bzero требует от вас #include memset потребностей #include

Страница MEMSET MAN здесь

Страница BZERO MAN здесь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top