有错吗?简单问题,帮忙看看

About2Rain 2003-08-21 11:15:25
这是它给出的错误

Your program ('ride') exited with signal #11 (segmentation violation [maybe caused by accessing memory out of bounds, array indexing out of bounds, using a bad pointer (failed open(), failed malloc), or going over the maximum specified memory limit]) when presented with test case 1, shown below:
--------------------------
COMETQ
HVNGAT
--------------------------

The program ran for 0 CPU seconds before the signal.
Please fix the error and resubmit.


我的代码在下面
#include <stdio.h>


/*
ID: loving_1
PROG: ride
*/

int main()
{
FILE* ifp;
FILE* ofp;

int i = 1;
int j = 1;
int c;

char GO[] = "GO";
char STAY[] = "STAY";
ifp = fopen("Input.txt","r");
ofp = fopen("Output.txt","w");

while((c=fgetc(ifp))!='\n')
i = ((c - 'A'+1) * i) % 47;

while((c=fgetc(ifp))!='\n' && c!=EOF)
j = ((c - 'A'+1) * j) % 47;

if(i != j)
fputs(GO, ofp);
else
fputs(STAY, ofp);

return 0;
}


它有这样的提示
NOTE: The input file has a newline at the end of each line but does not have a "return". Sometimes, programmers code for the Windows paradigm of "newline" followed by "return"; don't do that! Use simple input routines like "readln" (for Pascal) and, for C/C++, "fscanf" and "fid>>string".

...全文
21 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
About2Rain 2003-08-22
  • 打赏
  • 举报
回复
是要建立相关文件,已经建了
这不是我的编译器给的告警
我这里一切正常

是usac上的第一题,写完程序之后提交上去时,它的编译程序给出了这些信息
我也搞不懂怎么回事情
jscsqb 2003-08-22
  • 打赏
  • 举报
回复
程序没有错。在VC6.0下可以通过的。
首先必须在当前目录下建立Input.txt和Output.txt文件,Input.txt文件中是程序用来读入的,先要输入两行字符。(超过两行以上,第三行起被程序丢弃)
#include <stdio.h>


/*
ID: loving_1
PROG: ride
*/

int main()
{
FILE* ifp;
FILE* ofp;

int i = 1;
int j = 1;
int c;

char GO[] = "GO";
char STAY[] = "STAY";
ifp = fopen("Input.txt","r");
ofp = fopen("Output.txt","w");

while((c=fgetc(ifp))!='\n') //通过循环读入第一行字符,直到回车
i = ((c - 'A'+1) * i) % 47;//根据得到的字符的整型值确定i的值

while((c=fgetc(ifp))!='\n' && c!=EOF)//读入第二行字符,直到回车或者文件结尾
j = ((c - 'A'+1) * j) % 47; //根据得到的字符的整型值确定j的值
//注意:i和j在每次循环一般都是改变的
if(i != j) //比较最终得到i和j的异同
fputs(GO, ofp); //向Output.txt写入GO
else
fputs(STAY, ofp); //写入STAY

return 0;
}
楼主可能忘了建立相应的文件了。
fupa0 2003-08-22
  • 打赏
  • 举报
回复
是不是要加上:“&& c!=EOF”
jack_wq 2003-08-22
  • 打赏
  • 举报
回复
错误是不是中断?
qibo999 2003-08-22
  • 打赏
  • 举报
回复
文件最后好象没有关闭啊
sandrowjw 2003-08-22
  • 打赏
  • 举报
回复
厄,不好意思,应该是\n,你的程序没有错。
sandrowjw 2003-08-22
  • 打赏
  • 举报
回复
这是什么测试?
while((c=fgetc(ifp))!='\n')
改成
while((c=fgetc(ifp))!='\r')
试试
skywater 2003-08-22
  • 打赏
  • 举报
回复
你用的什么编译器,功能这么强大?
从你的代码来看,好像没什么错误,那些只是一些警告或者提醒的信息,前面的告诉你注意内存泄漏,注意数组的边界检查;后一个告诉你从文件里读字符的时候不要读"return",读"newline"(也就是'\n')就行了。至于什么是"return",我也不清楚。
GhostAdz 2003-08-22
  • 打赏
  • 举报
回复
fclose(ifp);fclose(ofp)这两句没有也没关系
一般不会有问题
在我的 vc 6下
你的程序编译完全通过 没错
ahusd 2003-08-22
  • 打赏
  • 举报
回复
打开文件没有关闭!你加上fclose(ifp);fclose(ofp)试试!
ahusd 2003-08-22
  • 打赏
  • 举报
回复
打开文件没有关闭!你加上fclose(ifp);fclose(ofp)试试!
Dragon132 2003-08-22
  • 打赏
  • 举报
回复
这题的题目是什么?
usac在哪?
wbh0360 2003-08-22
  • 打赏
  • 举报
回复
没错啊,你用的什么编译器?!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧