-1
我做了这个小程序来统计一个字符串中有多少'en。它确实有效,但是我收到一个错误,说有堆栈被检测到。我不明白如何解决这个...任何人都可以给我一个小费?堆栈粉碎检测到C
#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;
}
是字符串输入你超过29个字符?然后'gets'将愉快地写出超出传递数组范围的方式。有一个原因是'gets'已经从最新的C标准中删除,使用['fgets'](http://en.cppreference.com/w/c/io/fgets)(或['gets_s'](http:而不是.encppreference.com/w/c/io/gets))。 –
http://stackoverflow.com/questions/1345670/stack-smashing-detected可能会帮助你理解问题 – SoulRayder
我修复了一些特别讨厌的缩进问题,所以我们可以从树上看到木头。 – Bathsheba