LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1817|回复: 17

C语言问题!

[复制链接]
发表于 2004-11-23 10:52:52 | 显示全部楼层 |阅读模式
大家帮忙看看这段代码哪里出错了!
char *str = "abcdefghijklmno";
char *buf[10];
char *data;
int i;
data = str;
for(i = 0;i<3;i++)
{strncpy(buf,data,5);
data = data + 5;
}
for(i = 0;i<3;i++)
printf("%s\n",buf);
为什么每次提示bus error!
发表于 2004-11-23 11:03:00 | 显示全部楼层
char *buf[10];这句是不是该改为char buff[10]
 楼主| 发表于 2004-11-23 11:07:00 | 显示全部楼层
不能改啊!原意是一个字符串指针数组啊!这样把一个串给分别的复制到这个指针数组中!
发表于 2004-11-23 11:22:24 | 显示全部楼层
strncpy(buf,data,5);中的buf是个指针,没有分配空间
 楼主| 发表于 2004-11-23 11:30:44 | 显示全部楼层
那么应该怎么改啊!帮忙看看!
谢谢!
发表于 2004-11-23 11:41:50 | 显示全部楼层
自己读读书再改吧,这些知识最好自己获得。
发表于 2004-11-23 12:19:43 | 显示全部楼层
在strncpy(buf,data,5);前面加上 buf=malloc(10);

学C语言的时候指针的概念一定要弄清楚,否则处理字符串之类的东西时很容易出问题
发表于 2004-11-23 14:06:40 | 显示全部楼层
你的char *buf[10];
你只是定义了一个point,没有对空间进行分配
如果char buf[10];那就是分配空间了饿!
发表于 2004-11-24 15:32:13 | 显示全部楼层

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

  3. char *str = "abcdefghijklmno";
  4. char buf[10][10];
  5. char *data;

  6. int main()  {
  7.         int i;
  8.         data = str;
  9.         for(i = 0;i<3;i++)  {
  10.                 strncpy(buf[i], data, 5);
  11.                 data = data+5;
  12.         }
  13.         for(i=0; i<3; i++)
  14.         printf("%s\n", buf[i]);
  15.         return 0;
  16. }
复制代码
发表于 2004-11-25 10:38:14 | 显示全部楼层
楼上的最好再认真看看C语言教材,理解一下字符串是要以‘\0'结尾的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表