Создание строки char из char [] и int - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь создать одну строку из двух переменных, чтобы я мог использовать для нее различные функции string.h. Это то, что я получил до сих пор, но он возвращает пустую строку.

size_t length = strlen(name) + sizeof(int) + 1;
char *player = malloc(length);
snprintf(player, length, "%s %d\n", name, score);

и получает другую строку с тем же форматированием, что затем я использую для них strcmp, например:

if (strcmp(line, player) < 0)
        {
            fprintf(fcopy, "%s %d\n", name, score);

        }
        else
        {
            fputs(line, fcopy);
        }

Функция, которую я пытаюсь написать, берет «строковые» входные данные из текстового файла, структурированного так:

Джон 50

Аарон 45

Так что мне нужно, чтобы строка проигрывателя имела тот же формат. Надеюсь, это было ясно, извините, но я совершенно новичок ie, и я только начал входить в C и использовать stackoverflow.

1 Ответ

1 голос
/ 25 апреля 2020

Если вы используете динамическое распределение c, проще всего просто snprintf дать вам длину:

// calling with NULL,0 and it returns the count of character that
// __would__ have been written to the buffer
int len = snprintf(NULL, 0, "%s %d\n", name, score);
char *player = malloc(len + 1);
snprintf(player, len, "%s %d\n", name, score);
...
free(player); // remember to pick out the trash
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...