当前位置:  技术问答>linux和unix

下面这个程序编译后通过,运行时显示“段错误”,为什么呀,怎么改?

    来源: 互联网  发布时间:2015-12-12

    本文导语:  下面这个程序编译后通过,运行时显示“段错误”,为什么呀,怎么改? #include  #include  int main() {     char *s="Golden Global View";     char *d=" ";     char *p;     p=strtok(s,d);     while(p)     {        printf...

下面这个程序编译后通过,运行时显示“段错误”,为什么呀,怎么改?
#include 
#include 
int main()
{
    char *s="Golden Global View";
    char *d=" ";
    char *p;
    p=strtok(s,d);
    while(p)
    {
       printf("%sn",s);
       strtok(NULL,d);
    }
    getchar();
    return 0;
}

|
char *strtok(char *str1, char *str2);
看定义str1不是const的,说明在strtok里会修改str1的值。而你的s定义在只读区域,不能修改。
修改:
将char *s = "... ...";改为char s[128]="... ...";

|
倒不是分配空间的问题,1楼的解释很对, const的问题, 因为char *s="Golden Global View";和char s[]="Golden Global View";是有区别的。

while循环还需要改一下,要不然打印信息就没有什么意义了
    while(p)
    {
       printf("%sn",p);
       p=strtok(NULL,d);
    }




|
char *s="Golden Global View";改为char s[]="Golden Global View";

while循环改为
    while(p)
    {
       printf("%sn",s);
       p=strtok(NULL,d);
    }

|
全是不分配空间就开始操作.

    
 
 

您可能感兴趣的文章:

  • ubuntu下用qt开发程序,运行时显示权限不够/终端打不开文件或目录
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • 关于arm交叉编译器4.3.3编译程序报错,但是3.4.5却能编译通过的问题
  • tc编译的dos程序和vc编译的win32控制台程序的异同
  • JB下,我的程序编译得好慢!请问用什么方法编译才可以快一点?或编译顺序改变一下?
  • 在cygwin编译驱动程序要不要交叉编译?
  • 编译JAVA程序的时候,如果需要的JAR不在CLASSPATH,有什么办法能成功编译吗???
  • 用JCreator写了一个小程序,有十几个class,当修改某个文件重新编译,javac并没有编译修改的文件,请问要如何做javac才会重新编译所有的
  • rethat系统以前是32位的 现在想用64位的,ESQL编译C程序,需要加什么编译参数啊?
  • 在网上下的许多ubuntu程序都需要编译,那应该用什么编译?
  • 怎么查看arm平台上的程序是用那个版本的交叉编译器编译的????
  • 在linux下用proc编译程序,'*.pc'文件编译后成了'*.c?',多了一个问号?
  • 请问在linux下编译程序怎么设置编译器字节对齐?
  • 谁编译过PLX9054 Linux的驱动程序,我给100分教我编译和安装??
  • 请问:在proc程序中,若里面有模板的类型,能不能通过预编译啊,(编译时老是无法识别类型,我的头文件都已包含了)
  • 使用gcc编译器进行代码编译出来的程序是否遵循gpl协议
  • 用-g编译器选项编译程序就在makefile中按下面样子的加进去吗:
  • unix环境高级编程》源程序编译的讨论,编译成功、不成功的都请进!!!
  • 菜鸟问题: redhat linux 编译一个最简单的c程序, 其中包含了<studio.h>头文件,但在gcc编译时,提示找不到studio.h文件,请问各位大大
  • 有人说用vc++写的程序,代码可以直接拿到linux下找编译器,就可以编译,是真的吗?
  • 关于arm交叉编译器4.3.3编译程序报错,但是3.4.5却能编译通过的问题 iis7站长之家
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • Linux下怎样查c程序的错误号?程序出现错误:System error 32: Broken Pipe, 是什么原因?
  • windows server2008上PowerBuilder程序系统错误解决方法
  • 在inter版solaris 8上编socket程序,在read时遇到错误,错误号14,用strerror()看不到错误描述,请解决,多谢!
  • 解决服务器应用程序不可用,错误:0x80070005拒绝访问的错误
  • IIS未找到提供程序该程序可能未正确安装错误解决办法
  • java.exe-应用程序错误(程序一运行就报错)
  • 求救,程序运行时出现"闹钟"提示错误!!!!
  • 手动执行应用程序ok,但用crontab(在正确的用户名下)运行应用程序就报-12545(tns连接错误),怎么解决?
  • RedHat9.0:程序运行“段错误”,为什么连执行系统命令都出现“段错误”?
  • 错误跟踪程序 YouTrack
  • GDB调试程序报如下错误:
  • 为什么带s位的程序段错误产生不了core文件?
  • 用jbuilder开发的程序,其中用到了xylayout,将应用程序做成了jar文件,运行jar文件时,提示错误。请大家多帮忙
  • JAVA高手救命,如何对JSP程序进行错误控制!
  • 新手提问,应用程序运行:Permission denied错误
  • 执行一程序,向一个文本文件中写入数据,报文件大小超出限制错误!
  • 应用程序gnome-settings-daemon崩溃是什么错误?
  • VM下的linux Socket程序怎么客户机一连接就出现Bad address的错误?
  • mysql数据库的JDBC驱动程序为什么出现错误?
  • 急!!! 怎么通过core文件,查找程序中的错误!???
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 为什么我在java程序里启动的一个程序在java程序关闭后,该程序的所有进程都关掉了
  • 程序员的八种级别,你属于哪一级?
  • Linux 编程怎么样在程序开启一个程序,和关闭一个程序?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • 在docker容器中通过apt-get安装新的程序
  • Linux下的程序是在内存中运行的吗?为什么在程序运行的时候可以删除程序文件?
  • linux下通过crond实现自动执行程序
  • 我的程序是用c写的gtk+程序,有个函数的参数要传给它图片的文件名,但是图片和原程序不在同一目录下怎么办?怎么在程序里指定文件的路径


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3