我制作了这个小程序来计算字符串中有多少'en'。它确实有效,但我得到一个错误,说有检测到堆栈粉碎。我不明白如何解决这个问题......任何人都可以给我一个提示吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char s[30];
int getal=0, e, n;
int i = 0;
gets(s);
for (; s[i] != '\0'; i++) {
e =(s[i] == 'e');
n =(s[i + 1] == 'n');
if (e && n)
getal++;
}
printf("Het aantal bedraagt: %i", getal);
return 0;
}
答案 0 :(得分:3)
永远不要使用gets()
,它容易受到缓冲区溢出的影响。
使用更安全的替代fgets()
,如下所示:
char buf[256];
if(fgets(buf, sizeof buf, stdin) != NULL)
{
/* process string here */
}