免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1597 | 回复: 7
打印 上一主题 下一主题

字符串問題 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-16 09:22 |只看该作者 |倒序浏览
代碼如下:
#include<stdio.h>
#include<string.h>
int main()
{
    char *test = "This is a test string!";
    char *dest;
    sprintf(dest,"%s",test);
    printf("%s",dest);
    return 0;
}

gcc a.c 後運行報錯 "段錯誤"。請問這是什麼原因啊。

论坛徽章:
0
2 [报告]
发表于 2009-07-16 09:36 |只看该作者

  1. char dest[100];
  2. 一个足够容纳你的字符串的空间
  3. 建议好好看书
复制代码

论坛徽章:
0
3 [报告]
发表于 2009-07-16 09:39 |只看该作者
因为你在向未知的地方写数据,也就是dest。分配足够的空间,然后把指针交给dest。

论坛徽章:
0
4 [报告]
发表于 2009-07-16 10:44 |只看该作者
char *dest; 使用前一定要先分配内存

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
5 [报告]
发表于 2009-07-16 14:05 |只看该作者
除去提前分配内存,另外用snprinf吧

http://baike.baidu.com/view/2145088.htm
snprintf()
  int snprintf(char *str, size_t size, const char *format, ...);
  将可变个参数(...)按照format格式化成字符串,然后将其复制到str中
  (1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符('\0');
  (2) 如果格式化后的字符串长度 => size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符('\0')
  函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。

论坛徽章:
0
6 [报告]
发表于 2009-07-17 08:12 |只看该作者
以前在MFC中開發,都是CString 類幫我搞定這些事的,現在在linux下開發,有些問題經常出現,大家不要怪。

论坛徽章:
0
7 [报告]
发表于 2009-07-17 09:03 |只看该作者
你可以使用STL string

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
8 [报告]
发表于 2009-07-17 09:19 |只看该作者
LS说的对
既可以使用C风格字符串读入字符串,也可以通过string读取,推荐使用string,省去不少麻烦
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP