gpt4 book ai didi

c - 分别打印粘合在一起的 2 个小绳子的最有效方法

转载 作者:行者123 更新时间:2023-11-30 19:25:55 26 4
gpt4 key购买 nike

故事:大字符串是 aaa&bbb由两个小字符串组成,大字符串中分隔两个小字符串的是 &符号。

任务:使用最有效的方法分别打印第一个和第二个小字符串。

代码:

char big_str[8] = "aaa&bbb";

期望的输出:

aaa
bbb

最佳答案

最简单的方法就是使用字段宽度'.' "%s" 的修饰符printf 中的格式说明符和一些指针,例如

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

int main (void) {

char big_str[] = "aaa&bbb",
*p = strchr (big_str, '&'),
*ep = p + 1;

if (p)
printf ("%.*s\n%s\n", (int)(p - big_str), big_str, ep);

return 0;
}

示例使用/输出

$ ./bin/splitand
aaa
bbb

将值分隔成单独的字符串

要实际分离这些值,您可以以完全相同的方式处理它,只不过不是简单地打印输出,而是分配存储空间来保存每个字符串并将所需的字符复制到每个新的内存块。然后您可以按照您喜欢的方式使用单独的字符串,例如

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

int main (void) {

char big_str[] = "aaa&bbb",
*p = strchr (big_str, '&'),
*first, *second; /* pointers to allocate to hold first/second */

if (p) { /* validate '&' located */
char *ep = p + 1; /* ep now points to next char after '&' */
if (!(first = malloc (ep - big_str))) { /* allocate/validate first */
perror ("malloc-first");
return 1;
}
memcpy (first, big_str, p - big_str); /* memcpy to first */
first[p - big_str] = 0; /* nul-terminate */

if (!(second = malloc (strlen(ep) + 1))) { /* allocate second */
perror ("malloc-second");
return 1;
}
strcpy (second, ep); /* strcpy is fine here */

printf ("first : %s\nsecond : %s\n", first, second);

free (first); /* don't forget to free what you allocate */
free (second);
}
}

示例使用/输出

$ ./bin/splitanddyn
first : aaa
second : bbb

如果您还有其他问题,请告诉我。

关于c - 分别打印粘合在一起的 2 个小绳子的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58249850/

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