как присвоить значение строковому массиву? - PullRequest
3 голосов
/ 07 ноября 2010

например

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char substr[10][20];

int main() {
    substr[0] = "abc";

    printf("%d", substr[0]);
}

конечно выше не так?как это сделать?спасибо

Ответы [ 3 ]

4 голосов
/ 07 ноября 2010

Вы не можете назначать подобные строки в C. Вместо этого используйте strcpy(substr[0], "abc"). Кроме того, используйте %s не %d в вашем printf

3 голосов
/ 07 ноября 2010

Я ненавижу давать «полные» ответы на домашние вопросы, но единственный способ ответить на ваш вопрос - показать вам ответ на вашу проблему, потому что он настолько прост:

#include <stdio.h>
#include <string.h>

#define MAXLEN 20

char substr[10][MAXLEN];

int main(void) {
        strncpy(substr[0], "abc", MAXLEN);
        puts(substr[0]);
        return 0;
}

Ваш код (как есть) имеет несколько ошибок:

  • Вы рассматриваете substr[0] как строковый литерал.Вы не можете этого сделать.
  • Вы неправильно использовали форматтеры printf.%s для строк
  • Вам не нужно беспокоить printf() для печати строки
  • Вы должны (в реальном коде) следить за переполнением буфераследовательно, strncpy()
  • Если main() не хочет / нуждается argc и argv, его аргументы должны быть void
  • main() должны возвращать значение,тип возвращаемого значения int
  • Вы не используете ничего из <stdlib.h>, зачем его включать?

Я предлагаю исследовать строковые литералы, функции, доступные в <string.h>, а также спецификаторы формата.

Также обратите внимание, что я не проверяю возврат strncpy () , что вам следует сделать.Это оставлено как упражнение для читателя.

0 голосов
/ 07 ноября 2010

Надеюсь, это поможет:

void main(void)
{
    char* string[10];
    string[0] = "Hello";
}

В противном случае, я думаю, вам нужно скопировать его вручную или использовать strcpy или подобное для перемещения его из одного блока памяти в другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...