C: как создать пустую STRING?

Пожалуйста, я бился над этим 5 часов, я знаю, как создать пустой char, это примерно так:

char c[] = '';

но как я могу создать пустую STRING? (потому что я хочу использовать его как временное место для хранения других строк)

char temporary[] = "";
error : array type 'char [1]' is not assignable

Ваш вопрос непонятен. Что вы имеете в виду под «пустым символом»? В любом случае в C невозможно волшебным образом создать что-то, что можно использовать для хранения произвольной и изменяемой строки произвольной длины, если вы не динамически выделяете и не управляете памятью. Кроме того, второй пример (в той форме, которую вы его показали) действителен - если вы получаете сообщение об ошибке, ваш код каким-то образом отличается. Рассмотрите возможность предоставления фактического образца реального кода в форме минимальный воспроизводимый пример.

Peter 20.11.2018 19:29
tempo = ""; Если предположить, что tempo - это массив char, вы не можете этого сделать. Попробуйте tempo[0] = '\0'. Вы также можете сделать: strcpy(temp, ""); Или полностью очистить: memset(tempo, 0, sizeof(tempo);. Но, вероятно, в этом нет необходимости.
Johnny Mopp 20.11.2018 19:32

могу я сделать strcpy (temp, ""); не сказав, какая температура ???

masterCUCK9 20.11.2018 19:38

Я не могу использовать strcpy, если темп не ОПРЕДЕЛЕН

masterCUCK9 20.11.2018 19:39

@ masterCUCK9 Опечатка. Я хотел набрать tempo. Как в: strcpy(tempo, "");

Johnny Mopp 20.11.2018 19:39

ДА ? но темп не определен !! Как я могу вызвать strcpy (tempo, ""); Просто так ?? У меня вопрос, как СОЗДАТЬ ЭТО

masterCUCK9 20.11.2018 19:40

Хм? В вашем коде есть переменная tempo .... <shrug> Прочтите, как создать минимальный воспроизводимый пример.

Johnny Mopp 20.11.2018 19:41

темп - это пустая строка, которую я прошу создать

masterCUCK9 20.11.2018 19:42

Тогда у вас есть 2 вопроса: 1. Как создать пустую строку. 2. Как сбросить обратно на пустую строку после использования. См. Почта @ JohnBode, поскольку он отвечает на оба вопроса.

Johnny Mopp 20.11.2018 19:44

Все переменные должны быть определены до того, как их можно будет передать функции в C.

Peter 20.11.2018 19:44

да !! но как определить TEMPO, пожалуйста .... Я не могу создать пустую строку

masterCUCK9 20.11.2018 19:46

@ masterCUCK9 В настоящее время на ваш вопрос опубликовано 2 ответа. Вы что-нибудь читали? Оба они показывают, как создать пустую строку.

Johnny Mopp 20.11.2018 19:48

Я вижу, что проблема была там, я их читал, но извини, я рогоносец

masterCUCK9 20.11.2018 19:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
13
702
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В C вы должны постоянно создавать временный буфер. Наиболее типичный способ сделать это - написать такую ​​строку кода:

char temp_buffer[256];

В этом буфере будет 256 символов свободного места для размещения строк.

Ответ принят как подходящий

Определите буфер для хранения содержимого строки:

#define BUFFER_SIZE 256 // or whatever size you need

char buffer[BUFFER_SIZE+1] = {0}; // +1 for string terminator, 
                                  // = {0} initializer zeroes out entire buffer

Чтобы назначать строка в этот буфер, используйте strcpy:

strcpy( buffer, "some string" );

Чтобы добавить строка в этот буфер, используйте strcat:

strcat( buffer, "more string" );

РЕДАКТИРОВАТЬ

Теперь, когда вы отредактировали свой вопрос, проблема в строке

tempo = "";

Выражение массива, подобное tempo, не может быть целью оператора =; вы должен используете библиотечную функцию, например strcpy, для присвоения строковых значений. Если вы хотите установить для tempo пустую строку, вы можете выполнить одно из следующих действий:

strcpy( tempo, "" );

или

tempo[0] = 0;

или

tempo[0] = '\0';

Я бы на самом деле memsettempo до его размера, так как 0, чтобы весь буфер сбрасывался, а не только первый символ.

ritlew 20.11.2018 19:38

@ritlew: Это как бы зависит от того, что хочет сделать OP - если все, что ему нужно сделать, это убедиться, что tempo содержит пустую строку перед операцией strcpy, тогда достаточно установить начальный элемент на 0. Если он записывает этот буфер в файл или что-то в этом роде, тогда да, было бы безопаснее обнулить все неиспользуемые элементы.

John Bode 20.11.2018 19:39

Что ж, если строка - "Hello\0", тогда она становится "\0ello\0". Таким образом, если бы они записали strncpy в буфер с двумя символами "Hi", он превратился бы в "Hillo\0".

ritlew 20.11.2018 19:42

AAAAYYYAAA Я НАШЕЛ ПРОБЛЕМУ

masterCUCK9 20.11.2018 19:48

@ritlew: И это одна из причин, по которой я никогда не использую strncpy.

John Bode 20.11.2018 21:11

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