求助,怎么通过函数,把一个字符串,赋值给另一个字符串,谢谢!

lsh9982010 2018-06-05 03:10:56
请教:
unsigned char Data1[5][16];
unsigned char Data2[16] = "12345678900";


void f1(int id, unsigned char *data)
{
//
}

现在我想要实现的是
通过函数 f1
把 data2 的值,通过形参 *data
赋值给 Data1[id]

这个函数 f1 要怎么写阿?

谢谢!
...全文
1211 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlbertS 2018-06-06
  • 打赏
  • 举报
回复
引用 3 楼 lsh9982010 的回复:
能不能这样 void f1(int id, unsigned char *data) { Data1[id] = data; } 然后这样调用 f1(2,data2); 谢谢!
不可以的,需要使用strcpy或者strncpy或者memcpy,具体使用楼上有好的例子
paschen 2018-06-05
  • 打赏
  • 举报
回复
strcpy((char*)Data1[id], (const char*)data); 需要加上#include <string.h> 头文件 不能直接Data1[id] = data;,因为这是在赋值指针,而不是拷贝指针指向的字符串
lsh9982010 2018-06-05
  • 打赏
  • 举报
回复
引用 10 楼 cfjtaishan 的回复:
void mystrcpy(unsigned char *dst, unsigned char *src)
{
    unsigned char *tmp = dst;

    while((*tmp++ = *src++))
       ;
}
这样试试
一样出现这个警告 谢谢!
自信男孩 2018-06-05
  • 打赏
  • 举报
回复
while((*tmp++ = *src++) != 0)
       ;
那就不偷懒了。
wang0635 2018-06-05
  • 打赏
  • 举报
回复
引用 7 楼 lsh9982010 的回复:
//¿½±´ void mystrcpy(unsigned char *dst, unsigned char *src) { unsigned char *tmp = dst; while(*tmp++ = *src++) { ; } } 编译 在 while(*tmp++ = *src++) 提示 warning: #1293-D: assignment in condition 这是什么原因阿? 谢谢!
while((*tmp++ = *src++) != '\0') 这样就没有warning了。其实跟原来一样
自信男孩 2018-06-05
  • 打赏
  • 举报
回复
void mystrcpy(unsigned char *dst, unsigned char *src)
{
    unsigned char *tmp = dst;

    while((*tmp++ = *src++))
       ;
}
这样试试
自信男孩 2018-06-05
  • 打赏
  • 举报
回复
引用 7 楼 lsh9982010 的回复:
//¿½±´ void mystrcpy(unsigned char *dst, unsigned char *src) { unsigned char *tmp = dst; while(*tmp++ = *src++) { ; } } 编译 在 while(*tmp++ = *src++) 提示 warning: #1293-D: assignment in condition 这是什么原因阿? 谢谢!
这个警告可以忽略。不影响使用
lsh9982010 2018-06-05
  • 打赏
  • 举报
回复
//¿½±´ void mystrcpy(unsigned char *dst, unsigned char *src) { unsigned char *tmp = dst; while(*tmp++ = *src++) { ; } } 编译 在 while(*tmp++ = *src++) 提示 warning: #1293-D: assignment in condition 这是什么原因阿? 谢谢!
自信男孩 2018-06-05
  • 打赏
  • 举报
回复
引用 3 楼 lsh9982010 的回复:
能不能这样 void f1(int id, unsigned char *data) { Data1[id] = data; } 然后这样调用 f1(2,data2); 谢谢!
不能,因为Data1是字符串数组,不是指针数组。
_LinGM 2018-06-05
  • 打赏
  • 举报
回复
strcpy memcpy
自信男孩 2018-06-05
  • 打赏
  • 举报
回复
void f1(int id, unsigned char  *data)
{
   strcpy(Data1[id-1], data);    //若id是对应的Data1的行数;
}
f1(1, Data2);   //调用f1实现Data2拷贝到Data1中。
自信男孩 2018-06-05
  • 打赏
  • 举报
回复
引用 4 楼 lsh9982010 的回复:
void f1(int id, unsigned char *data) { strcpy(Data1[id-1], data); //若id是对应的Data1的行数; } 好像单片机的 C51 ,没有 strcpy 这怎么办? 谢谢!
那就自己写一个strcpy或memcpy吧 或者从库里找到strcpy或memecpy的源码; 找一下网上别人写的strcpy或memcpy源码;自己改一改或者不用改弄明白就可以拿来用。
lsh9982010 2018-06-05
  • 打赏
  • 举报
回复
void f1(int id, unsigned char *data) { strcpy(Data1[id-1], data); //若id是对应的Data1的行数; } 好像单片机的 C51 ,没有 strcpy 这怎么办? 谢谢!
lsh9982010 2018-06-05
  • 打赏
  • 举报
回复
能不能这样 void f1(int id, unsigned char *data) { Data1[id] = data; } 然后这样调用 f1(2,data2); 谢谢!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧