#include<stdio.h>
#include<string.h>
int main()
{
int i,k,j,m;
char s[100];
char a[100]={'0'};
char c;
scanf("%s",&s);
m=strlen(s);
for(i=0;i<=m-3;i++){
if(s[i+1]=='-'&&s[i]<s[i+2]){
for(c=s[i];c<=s[i+2];c++)
a[k++]=c; 调试到这里就提示错误
}
else
{
for(j=i;j<=i+2;j++)
a[k++]=s[j];
}
}
a[k]='\0';
printf("%s",a);
return 0;
}
错误提示是:0x000B14DC 处有未经处理的异常(在 review.exe 中): 0xC0000005: 写入位置 0xCD0FC744 时发生访问冲突。
第1个回答 推荐于2017-11-25
骚年,编程的时候要仔细,a[k++]=c;你的k的初值是多少啊?
你没给k赋初值,计算机怎么知道a[k++]在那里啊?当然会抛出异常了!根据你这个题目的意思,在函数头加个int k=0.就好了。本回答被提问者采纳
你没给k赋初值,计算机怎么知道a[k++]在那里啊?当然会抛出异常了!根据你这个题目的意思,在函数头加个int k=0.就好了。本回答被提问者采纳
第2个回答 2019-03-19
不知道你n有多大,也不知道a数组存的数据多少,如果你的n达到几万甚至有时候是几千的话就是内存分配问题,在如你的定义方式在栈上分配内存通常分配不了这么大,会导致写入位置冲突。需要用malloc或new进行动态内存分配。
第3个回答 2012-12-06
k未初始化,取值超过a数组长度100,越界访问
第4个回答 2012-12-06
#include<stdio.h>
#include<string.h>
int main()
{
int i,k=0,j,m;
char s[100];
char a[100]= {'0'};
char c;
scanf("%s",s);
m=strlen(s);
printf("%d\n",m);
for(i=0; i<=m-3; i++)
{
if(s[i+1]=='-'&&s[i]<s[i+2])
{
for(c=s[i]; c<=s[i+2]; c++)
a[k++]=c;
}
else
{
for(j=i; j<=i+2; j++)
a[k++]=s[j];
}
}
a[k]='\0';
printf("%s",a);
return 0;
}
#include<string.h>
int main()
{
int i,k=0,j,m;
char s[100];
char a[100]= {'0'};
char c;
scanf("%s",s);
m=strlen(s);
printf("%d\n",m);
for(i=0; i<=m-3; i++)
{
if(s[i+1]=='-'&&s[i]<s[i+2])
{
for(c=s[i]; c<=s[i+2]; c++)
a[k++]=c;
}
else
{
for(j=i; j<=i+2; j++)
a[k++]=s[j];
}
}
a[k]='\0';
printf("%s",a);
return 0;
}