gpt4 book ai didi

将 char 数组复制到数组的元素

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:33 24 4
gpt4 key购买 nike

我一直在编写一个函数来提取每两个换行符之间的信息。我在将 char 数组“数据”复制到“信息”数组的元素时遇到问题。

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

void query_db();

char buffer[100]="+HTTPREAD:86\nUdara\nNO\n+94123456789\nOK";
volatile int buffer_pointer;
char info[3][20];

int main()
{
query_db();
return 0;
}

void query_db(){
unsigned char j=0,start,end,amount;
char data[20];
buffer_pointer = 0;
while( buffer_pointer < strlen(buffer)){
if(buffer[buffer_pointer] == 10){
if(j==0){
start = buffer_pointer+1;
printf("headstart = %u\n",start);
}
else{
printf("\n%u start = %u\n",j,start);
end = buffer_pointer;
amount = end - start;
strncpy(data, buffer+start,amount);
memcpy(info[j-1],data,strlen(data));//need help in this line
printf("data = %s\n",info[j-1][20]);
memset(data,0,20);
start = end+1;
printf("%u end = %u\n",j,end);
}
j++;
}
buffer_pointer++;
}
}

当我执行上面的代码时,它给出了以下输出而不是我的预期。

headstart = 13

1 start = 13
data = (null)
1 end = 18

2 start = 19
data = (null)
2 end = 21

3 start = 22
data = (null)
3 end = 34

首选输出:

headstart = 13

1 start = 13
data = Udara
1 end = 18

2 start = 19
data = NO
2 end = 21

3 start = 22
data = +94123456789
3 end = 34

最佳答案

输出错误的问题出在这里:

printf("data = %s\n",info[j-1][20]);

您使用 "%s" 格式打印字符串,但 info[j-1][20] 是单个 char。而且它也是越界的。

您可能打算使用 info[j-1]

关于将 char 数组复制到数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52906183/

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