gpt4 book ai didi

c - C中将字符串添加到char数组并用\0分隔

转载 作者:行者123 更新时间:2023-11-30 15:00:18 25 4
gpt4 key购买 nike

我正在尝试编写一些代码,不断将单词添加到名为 sTable 的字符数组中,并以\0 分隔。 sTable 的最终内容如下所示:

"word\0int\0paper\0mushroom\0etc\0"

我的第一个想法是将这些单词读入一个单独的字符数组 tempWord 中,并将它们连接在一起,但是,我如何能够在它们之间添加\0 并保留 sTable 是最终数组吗?我对 C 不太熟悉,提前感谢您的帮助!

最佳答案

您可以通过保留一个指向单词数组中应接收单词的下一个位置的指针来完成此操作。下面的函数 add_word() 获取一个指向 char 数组和一个字符串中的位置的指针。将 wrd 添加到从 next 开始的位置后,将返回指向空终止符后面位置的指针。 next 指针最初被赋予字符数组 words[] 中第一个位置的地址。请记住,这里没有错误检查,因此调用者负责确保字符串适合数组。

#include <stdio.h>

#define MAX_SIZE 1000

char * add_word(char *next, const char *wrd);

int main(void)
{
char words[MAX_SIZE];
char *next = words;

next = add_word(next, "word");
next = add_word(next, "int");
next = add_word(next, "mushroom");
next = add_word(next, "etc");

for (char *ptr = words; ptr < next; ptr++) {
if (*ptr == '\0') {
printf("\\0");
} else {
putchar(*ptr);
}
}

putchar('\n');

return 0;
}

char * add_word(char *next, const char *wrd)
{
while (*wrd != '\0') {
*next++ = *wrd++;
}
*next++ = '\0';

return next;
}

程序输出:

word\0int\0mushroom\0etc\0

这是上述程序的一个版本,已进行修改,以便 add_word() 函数获取要添加的单词的起始位置的索引,并返回下一个单词的索引。还添加了一个数组 word_indices[] 来保存添加到 words[] 中的每个单词的起始索引。

#include <stdio.h>

#define MAX_SIZE 1000

size_t add_word(char *tokens, size_t next, const char *wrd);

int main(void)
{
char words[MAX_SIZE];
size_t word_indices[MAX_SIZE] = { 0 };
size_t next = 0, count = 0;

char *input[4] = { "word", "int", "mushroom", "etc" };

for (size_t i = 0; i < 4; i++) {
next = add_word(words, next, input[i]);
word_indices[++count] = next;
}

/* Show characters in words[] */
for (size_t i = 0; i < next; i++) {
if (words[i] == '\0') {
printf("\\0");
} else {
putchar(words[i]);
}
}
putchar('\n');

/* Print words in words[] */
for (size_t i = 0; i < count; i++) {
puts(&words[word_indices[i]]);
}

return 0;
}

size_t add_word(char *tokens, size_t next, const char *wrd)
{
while (*wrd != '\0') {
tokens[next++] = *wrd++;
}
tokens[next++] = '\0';

return next;
}

程序输出:

word\0int\0mushroom\0etc\0
word
int
mushroom
etc

关于c - C中将字符串添加到char数组并用\0分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42193788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com