Пожалуйста, я бился над этим 5 часов, я знаю, как создать пустой char, это примерно так:
char c[] = '';
но как я могу создать пустую STRING? (потому что я хочу использовать его как временное место для хранения других строк)
char temporary[] = "";
error : array type 'char [1]' is not assignable
tempo = ""; Если предположить, что tempo - это массив char, вы не можете этого сделать. Попробуйте tempo[0] = '\0'. Вы также можете сделать: strcpy(temp, ""); Или полностью очистить: memset(tempo, 0, sizeof(tempo);. Но, вероятно, в этом нет необходимости.
могу я сделать strcpy (temp, ""); не сказав, какая температура ???
Я не могу использовать strcpy, если темп не ОПРЕДЕЛЕН
@ masterCUCK9 Опечатка. Я хотел набрать tempo. Как в: strcpy(tempo, "");
ДА ? но темп не определен !! Как я могу вызвать strcpy (tempo, ""); Просто так ?? У меня вопрос, как СОЗДАТЬ ЭТО
Хм? В вашем коде есть переменная tempo .... <shrug> Прочтите, как создать минимальный воспроизводимый пример.
темп - это пустая строка, которую я прошу создать
Тогда у вас есть 2 вопроса: 1. Как создать пустую строку. 2. Как сбросить обратно на пустую строку после использования. См. Почта @ JohnBode, поскольку он отвечает на оба вопроса.
Все переменные должны быть определены до того, как их можно будет передать функции в C.
да !! но как определить TEMPO, пожалуйста .... Я не могу создать пустую строку
@ masterCUCK9 В настоящее время на ваш вопрос опубликовано 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: Это как бы зависит от того, что хочет сделать OP - если все, что ему нужно сделать, это убедиться, что tempo содержит пустую строку перед операцией strcpy, тогда достаточно установить начальный элемент на 0. Если он записывает этот буфер в файл или что-то в этом роде, тогда да, было бы безопаснее обнулить все неиспользуемые элементы.
Что ж, если строка - "Hello\0", тогда она становится "\0ello\0". Таким образом, если бы они записали strncpy в буфер с двумя символами "Hi", он превратился бы в "Hillo\0".
AAAAYYYAAA Я НАШЕЛ ПРОБЛЕМУ
@ritlew: И это одна из причин, по которой я никогда не использую strncpy.
Ваш вопрос непонятен. Что вы имеете в виду под «пустым символом»? В любом случае в C невозможно волшебным образом создать что-то, что можно использовать для хранения произвольной и изменяемой строки произвольной длины, если вы не динамически выделяете и не управляете памятью. Кроме того, второй пример (в той форме, которую вы его показали) действителен - если вы получаете сообщение об ошибке, ваш код каким-то образом отличается. Рассмотрите возможность предоставления фактического образца реального кода в форме минимальный воспроизводимый пример.