| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2368 人关注过本帖
标题:语法没错误 运行后提示.exe停止工作
只看楼主 加入收藏
yanglu252
Rank: 1
等 级:新手上路
帖 子:27
专家分:4
注 册:2009-11-1
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:9 
语法没错误 运行后提示.exe停止工作
请问这是什么原因啊?怎么解决/
搜索更多相关主题的帖子: 运行 提示 exe 语法 
2009-11-16 18:26
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:0 
这个问题可能的原因多的跟鬼一样···把代码发上来··不然我们也没法帮你···
2009-11-16 18:32
看海的小星
Rank: 2
等 级:论坛游民
帖 子:30
专家分:51
注 册:2009-10-11
收藏
得分:0 
代码发一下。
2009-11-16 18:33
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:0 
以下是引用lijm1989在2009-11-16 18:32:42的发言:

这个问题可能的原因多的跟鬼一样···把代码发上来··不然我们也没法帮你···
楼上说的对····
可能是数组越界或者是指针指向错误等等。。。
把代码发上来啊 ,大家讨论讨论····
2009-11-16 18:35
yanglu252
Rank: 1
等 级:新手上路
帖 子:27
专家分:4
注 册:2009-11-1
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    FILE *fp;

    char a[][8]={"Apple","Grape","Pear"};
    char *aa="";
    int i;

    if((fp=fopen("f11.txt","w"))==NULL)
    {
        printf("can not open the file!\n");
        exit(0);
    }
    for(i=0;i<3;i++)
        fputs(a[i],fp);

    fclose(fp);

    if((fp=fopen("f11.txt","r"))==NULL)
    {
        printf("can not open the file\n");
        exit(0);
    }
    i=0;
    while(!feof(fp))
    {if(fgets(aa,strlen(a[i++]+1),fp)!=NULL)
     puts(aa);
    }
    fclose(fp);

    return 0;
   
}
问题很可能是红色那块   因为把红色那注释了后就没出现问题
2009-11-16 19:08
yanglu252
Rank: 1
等 级:新手上路
帖 子:27
专家分:4
注 册:2009-11-1
收藏
得分:0 
回复 3楼 看海的小星
发了 帮忙看看
2009-11-16 19:11
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:10 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    FILE *fp;

    char a[][8]={"Apple","Grape","Pear"};
    char aa[8];    //   因为aa没分配内存,下面gets那里赋值发生错误···可以先利用数组好分配足够的空间,或用malloc
    int i;

    if((fp=fopen("f11.txt","w"))==NULL)
    {
        printf("can not open the file!\n");
        exit(0);
    }
    for(i=0;i<3;i++)
        fputs(a[i],fp);

    fclose(fp);

    if((fp=fopen("f11.txt","r"))==NULL)
    {
        printf("can not open the file\n");
        exit(0);
    }
    i=0;
    while(!feof(fp))
    {if(fgets(aa,strlen(a[i++])+1,fp)!=NULL)   //LZ笔误了吧··
     puts(aa);
    }
    fclose(fp);

    return 0;
   
}
2009-11-16 19:35
yanglu252
Rank: 1
等 级:新手上路
帖 子:27
专家分:4
注 册:2009-11-1
收藏
得分:0 
回复 7楼 lijm1989
十分感谢lijm1989  通过你的修改 问题解决了 ~~~!
2009-11-16 19:44
fgchg911
Rank: 4
等 级:业余侠客
威 望:1
帖 子:131
专家分:204
注 册:2009-9-6
收藏
得分:10 
以下是引用lijm1989在2009-11-16 19:35:28的发言:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    FILE *fp;

    char a[][8]={"Apple","Grape","Pear"};
    char aa[8];    //   因为aa没分配内存,下面gets那里赋值发生错误···可 ...
7楼说的对,char *aa="";表示字符指针aa指向常量区的一个常量字符串""的首地址
楼主在fgets函数中对aa操作,试图修改常量区,自然就产生错误了

可以通过指针修改的应该是堆内存,即用malloc非配空间

或按7楼的用数组
2009-11-22 21:37
fgchg911
Rank: 4
等 级:业余侠客
威 望:1
帖 子:131
专家分:204
注 册:2009-9-6
收藏
得分:0 
#include <stdio.h>

int main(void)
{
    char *p;
    char a[]="abcdefg";
    p=a;
    puts(a);
    puts(p);

    *p='c';
    puts(a);
    puts(p);
    return 0;   
}

abcdefg
abcdefg
cbcdefg
cbcdefg

数组保存在栈内存中,通过指针修改数组是允许的
2009-11-22 21:44
快速回复:语法没错误 运行后提示.exe停止工作
数据加载中...
 
   



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

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