Как назначить новую строку массиву char без строковых функций - PullRequest
0 голосов
/ 10 декабря 2018

Я хочу изменить массив символов с различными строками, например, массив временных символов, который принимает различные строки.Скажем, массив символов A [10] = "Алиса", как назначить A [10] = "12".Без использования строковых функций?

TIA

Ответы [ 3 ]

0 голосов
/ 10 декабря 2018

Ну, так как строковый массив отмечен, но указатель на массив вы можете просто назначить так:

int main(void) {
    char *name[] = { "Illegal month",
                            "January", "February", "March", "April", "May", "June",
                            "July", "August", "September", "October", "November", "December"
    };
    name[10] = "newstring";
    printf("%s",name[10]);
    return 0;
}
0 голосов
/ 10 декабря 2018

это как ответ Говинда Пармара, но с циклом for.

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char str[11] = "hello world";
    char new[5] = "2018";   
    int i = 0;

    for (i; new[i] != '\0'; i++)
         str[i] = new[i];

    str[i] = '\0';

    printf("str => '%s' ",str);

    return 0;
}

вывод:

str => '2018'                                                                                                              
0 голосов
/ 10 декабря 2018

В C строка - это просто массив типа char, который содержит печатные символы, за которыми следует завершающий нулевой символ ('\0').

Обладая этими знаниями, вы можете отказаться от стандартных функций strcpy и strcat и назначить строку вручную:

A[0] = '1';
A[1] = '2';
A[2] = '\0';

Если в строке A есть символы, превышающие индекс2, они не имеют значения, так как функции обработки строк прекратят чтение строки, когда они встретят нулевой терминатор в A[2].

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