如何将数字赋值到char数组中?

jiahehao 2010-11-15 10:45:28
一个字符串,是IP地址类型的,类似“192.168.1.1”,想赋值到一个unsigned char数组t1[4]中去,即数组的第一位是192,第二位是168,第三位是1,第四位是1。

写了一个转换程序,但输出总是不对。从字符串中取数都是对的,就是赋值后就不对了,请各位指正,错在何处?

#include "stdafx.h"
#include <stdio.h>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
char ipaddr[64];
unsigned char t1[4];
char *p_addr;
int i =0;
int ip_number;
char *p;
char *delims={"."};

strcpy(ipaddr, "192.168.1.2");
p = strtok(ipaddr,delims);
while (p != NULL)
{
ip_number = atoi(p);
unsigned char ss = ip_number;
//str[0] = (char)(a & 0xff);
//t1[i] = (char)(ip_number & 0xff);
//t1[i] = (ip_number>>8) & 0xff;
//memcpy(t1[i],&ip_number,4);

t1[i] = ss;
p=strtok(NULL,delims);
}
for (int j = 0; j < 4; j++)
{
printf("The number is %d.\n",t1[j]);
}
return 0;
}
...全文
434 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-11-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jiahehao 的回复:]

苍天。。。。。二楼的答案是对的。居然犯这么简单的错误。
[/Quote]

.......................
我还以为你想自己实现呢。。。
jiahehao 2010-11-15
  • 打赏
  • 举报
回复
苍天。。。。。二楼的答案是对的。居然犯这么简单的错误。
「已注销」 2010-11-15
  • 打赏
  • 举报
回复
char s[] = "192.168.1.1";
int t[4];
char t1[4];

sscanf(s, "%d.%d.%d.%d", &t[0], &t[1], &t[2], &t[3]);
t1[0]=(char)t[0];
t1[1]=(char)t[1];
t1[2]=(char)t[2];
t1[3]=(char)t[3];



不知道这样行不行?
elated 2010-11-15
  • 打赏
  • 举报
回复
用inet_pton不好么?
dubiousway 2010-11-15
  • 打赏
  • 举报
回复
t1[i++] = ss;

69,371

社区成员

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

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