为什么我编的C++程序运行的时候提示程序访问违例(段异常)

来源:百度知道 编辑:UC知道 时间:2024/06/03 17:28:25
#include <iostream>
#include <string.h>
using namespace std;
int main()
{char a[20][10];
char s[]="i am a boy and i need money";
char *p;
int i,j,n,k;
p=strtok(s," ");
i=0;
while(p)
{cout<<p<<endl;
p=strtok(NULL," ");
a[i++][10]=*p;
}
for(i=0;i<n-1;i++) (我分步调试的时候在这里就出现问题了)
{ k=0;
{for(j=i+1;j<n;j++)
if(a[i][10]=a[j][10])
k++;
}
cout<<a[i]<<" "<<k<<"times"<<endl;
}
system("pause");
}
我这程序的目的就是统计英语句子中单词出现的次数。麻烦各位高手帮忙解决哈。。谢谢。我没有多少分了,所以各位大哥大姐就不要计较了吧。。SOS..
对,n是忘记初始化了,但我改了后仍然不行,仍旧有那样的错误提示。为什么?

你的n没有初始化啊!!!!
]
你把改后的程序发上来

很可能是数组下标越界!

p=strtok(s," "); ——这个是什么意思,你说一下,以前没看见过。

你写的那个程序错误太多……

给你修正了一下:

#include <iostream>
#include <string.h>
using namespace std;
void main()
{char a[20][10]={{0}};
char s[]="i am a boy and i need money";
char *p;
int i,j,n,k;
p=s;
i=0;
char *q=p;
while(*p)
{
while(*p&&*p!=' ')
{
cout<<*p;
p++;
}
int i2=0;
while(*q&&*q!=' ')
{
a[i][i2++]=*q;
q++;
}
if (*p) {p++;q++;}
i++;
}
n=i;
cout << endl;
for(i=0;i<n;i++)
{
k=0;
for(j=0;j<n;j++)
{
int m=0;bool flags=true;
while (a[i][m])
{
if (strlen(a[i])!=strlen(a[j]))
{
flags=false;break;}
if (a[i][m]!=a[j][m])
{fl