标题:strncpy的奇怪指针问题
只看楼主
yangyang321
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-11-25
 问题点数:0 回复次数:6 
strncpy的奇怪指针问题
int main(void)
{           
    char *str = "Select * from Table";
        char *des = "hahahaheiheialsdjfsdfdskf";
    strncpy(des,str,10);
    puts(des);
    return 0;
   
}
这段代码执行后提示段错误
有点不明白
改成char des[100];就可以了
难道指针不行?
搜索更多相关主题的帖子: strncpy 指针 
2007-11-25 16:12
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
得分:0 
char *str 只是定义了一个字符指针,并没有存放的空间

后面的字符串是个常量,不允许修改的

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-11-25 16:19
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
得分:0 
char *des = "hahahaheiheialsdjfsdfdskf";
相当于const char *des = "hahahaheiheialsdjfsdfdskf";
改成这样就可以了char des[ ]="hahahaheiheialsdjfsdfdskf";

英者自知,雄者自胜
2007-11-25 16:25
yangyang321
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-11-25
得分:0 
呵呵,了承
谢谢2位
版主辛苦
2007-11-25 22:39
josen0205
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:307
专家分:52
注 册:2007-5-8
得分:0 
strncpy(des,str,10); 这样的语句很容易出错的
最好加上一句 des[10] = '\0';

只有想不到,没有做不到
2007-11-26 09:19
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
得分:0 
嗯,楼上的做法比较安全

英者自知,雄者自胜
2007-11-26 11:04
wangfengLLD
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-11-6
得分:0 
给一个用strncpy的例子:
#include <stdio.h>
#include <string.h>

int main(void)
{
   char string[10];
   char *str1 = "abcdefghi";

   strncpy(string, str1, 3);
   string[3] = '\0';
   printf("%s\n", string);
   return 0;
}

nothing is impossible
2007-11-26 11:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-188278-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.198506 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved