gpt4 book ai didi

c - 如何在 C 中编写一个返回 char * 部分的函数?

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

我想返回 C 中 char* 的一部分(或者说子字符串)。重点是用户定义了我想要返回的起始索引和长度。首先,我检查给定的值是否在范围内且为正数,如果不在范围内,我想返回 null。

这是我尝试过的:

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

char * f(char a[], int start, int len, int lenA)
{
int i, j = 1;
char *temp;

if ((start + len) > lenA)
return NULL;
if (start < 0 || len < 0)
return NULL;
else if (len == 0) {
temp = malloc(sizeof(char)*1);
return temp;
}

temp = malloc(sizeof(char)*len);
for (i = 0; len >= j; i++, j++) {
temp[i] = a[start];
start++;
}

return temp;
}

int main(void)
{
int i;
char *a = {'a', 'b', 'c'};

a = f(a, 0, 2, 3);

int size = sizeof(a) / sizeof(a[0]);

if (a != NULL) {
printf("{");
for (i = 0; i < size; i++) {
printf("'%c',", a[i]);
if (i < (size - 1))
printf(" ");
}
printf("}\n");
}
else printf("null\n");

return 0;

}

重点是,当我运行它时,我收到一条错误消息:段错误(核心转储)相反,它应该打印:{'a', 'b'}。正如您在我的 main 中看到的那样,我使用 0 起始索引和长度 2 来调用该函数,因此它应该获取前两个字符。任何想法,如何解决它?

最佳答案

   char *a = {'a', 'b', 'c'};

不是有效的 C 代码。请启用您的编译器警告。

如果您想要一个 char 数组,请使用:

char a[]  = {'a', 'b', 'c'};

或者对于空终止字符串:

char a[] =  "abc"; 

关于c - 如何在 C 中编写一个返回 char * 部分的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24849611/

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