泪流满面求助这两个for循环与while循环的区别

oarer 2011-08-08 10:18:09
杭电ACM 2054,while循环写法AC,for循环写法始终runtime error(access violation),看了很久没看出原因,求救啊!


//while循环AC过
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void f(char *s){
char *_s=s+strlen(s)-1;
if(strchr(s,'.')){
while(*_s=='0'){
*_s--='\0';
}
}
if(*_s=='.')*_s='\0';
}
int main(){
char a[100000],b[100000],*s1=a,*s2=b;
while(scanf("%s%s",a,b)!=EOF){
f(s1);f(s2);
puts(strcmp(s1,s2)?"NO":"YES");
}
}


//泪流满面的runtime error
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void f(char *s){
int j;
if(strchr(s,'.')){
for(j=strlen(s)-1;s[j]=='0';j--){
s[j]='\0';
}
}
if(s[j]=='.')s[j]='\0';
}
int main(){
char a[100000],b[100000],*s1=a,*s2=b;
while(scanf("%s%s",a,b)!=EOF){
f(s1);f(s2);
puts(strcmp(s1,s2)?"NO":"YES");
}
}
...全文
126 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
oarer 2011-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 babilife 的回复:]
很明显


C/C++ code
void f(char *s){
int j;
if(strchr(s,'.')){//如过这里条件不满足
for(j=strlen(s)-1;s[j]=='0';j--){
s[j]='\0';
}
}
if(s[j]=='.')s[j]='\0'; ……
[/Quote]

泪流满面感谢你!
stjay 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 stjay 的回复:]

scanf("%s%s",a,b)都已经有问题了,两个%s
[/Quote]

...看错了,还以为sscanf
stjay 2011-08-08
  • 打赏
  • 举报
回复
scanf("%s%s",a,b)都已经有问题了,两个%s
至善者善之敌 2011-08-08
  • 打赏
  • 举报
回复
很明显

void f(char *s){
int j;
if(strchr(s,'.')){//如过这里条件不满足
for(j=strlen(s)-1;s[j]=='0';j--){
s[j]='\0';
}
}
if(s[j]=='.')s[j]='\0'; // 这里的J就没有被初始化。。
}

69,371

社区成员

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

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