c语言高手进,一段小程序不知道哪错了

来源:百度知道 编辑:UC知道 时间:2024/06/20 21:10:45
要求输入一字符串,把数字去掉,例如输入ewad86da1, 输出ewadda. 下面的这个程序内存溢出,不知道哪出问题了,高手指教.

#include<stdio.h>
#include<string.h>
void main()
{
char *p;
char a[100];
printf("输入字符串\n");
gets(a);
for(p=a;p<p+strlen(a);p++)
if(*p>='0'&&*p<='9')
continue;
printf("%c",*p);

}
你运行了吗? 根本就不对

#include<stdio.h>
#include<string.h>
void main()
{
char *p;
char a[100];
printf("输入字符串\n");
gets(a);
for(p=a;p<a+strlen(a);p++){ /*注意这里*/
if(*p>='0'&&*p<='9')
continue;
printf("%c",*p);
} /*注意这里*/

}

楼上的是对的,我想说,是不是你的编译器缘故?

PS:最好在gets(a)前memset一下a.

for(p=a;p<p+strlen(a);p++) 改成:
for(p=a;*p!='\0';p++)

p指向a的首地址,但a分配了100个大小的空间,但有效的字符串应该是到'\0'就结束了。字符串的结束表示为‘\0’,一般不用字符串的长度来判断结束。