标题:字符串指针问题
只看楼主
callc
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-7-3
结帖率:0
已结贴  问题点数:20 回复次数:7 
字符串指针问题
请教下面代码为什么运行异常
  7         char *st,*st2;
  8         printf("please input a string:");
 10         scanf("%s",st);
 13         printf("%s\n",st)
运行后提示“段错误 (核心已转储)”后就终止了。
而在第8行,或者第10行也行,在下面加“st2 = st;”就能够正常运行了,谢谢。
搜索更多相关主题的帖子: please 字符串 
2013-07-03 22:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:4 
不仔细看书、学习就动手乱写代码,看看指针是什么概念再scanf()啦。

授人以渔,不授人以鱼。
2013-07-03 22:35
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
得分:4 
你的指针st没有指向的对象!也就是输入的内容没有存储地址!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-07-03 23:31
tremere
Rank: 6Rank: 6
来 自:火星
等 级:侠之大者
帖 子:223
专家分:432
注 册:2013-3-11
得分:4 
学习。

极品菜鸟,来学习啦,啦啦啦啦啦啦啦。。。
2013-07-04 08:33
callc
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-7-3
得分:0 
回复 3楼 我叫沃恩
加一句st2 = st;就成功了,那请问st2算存储地址吗?
2013-07-04 08:53
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:4 
以下是引用callc在2013-7-4 08:53:34的发言:

加一句st2 = st;就成功了,那请问st2算存储地址吗?
你说的这个东东  真的不知道你在说什么  也解释不了

使用字符串指针 应该先分配内存(这样字符串才有地方呆着)  或者嫌麻烦直接使用字符数组
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *st = (char *)malloc(100);
    printf("please input a string:");
    scanf("%s",st);
    printf("%s\n",st);
    free(st);
    return 0;
} 



DO IT YOURSELF !
2013-07-04 09:11
callc
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-7-3
得分:0 
回复 6楼 wp231957
明白了,谢谢。
2013-07-04 10:42



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




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

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