教えてください(文字と文字列について)
Posted: 2008年11月14日(金) 15:41
お初ですが質問させてください。
今作っているコードで
標準入力から文字列を読み込み、その中のアルファベットの出現回数(文字「a」が何回、文字「b」が何回、…)を計算し、出現回数が1以上の文字について次のように表示(文字・出現回数・グラフ)するプログラムを書け。
結果
input string: Tokyo Osaka Nagoya
N --1 *
O --1 *
T --1 *
a --4 ****
g --1 *
k --2 **
o --3 ***
s --1 *
y --2 **
というコードを作って
#include<stdio.h>
int main(void)
{
int kmozi[301];
int cnt = 0, mcnt, aknt;
char buff[256];
printf("文字列入力:");
gets(buff);
while(kmozi[cnt] <= 299)
{
kmozi[cnt] = 0;
cnt++;
}
//scanf("%s", buff);
for(cnt = 0;kmozi[cnt] <= 126;++cnt)
{
//kmozi[cnt] = 0;
for(mcnt = 0;buff[mcnt] != '\0';++mcnt)
{
if (buff[mcnt] == cnt)
{
kmozi[cnt] += 1;
}
}
if (kmozi[cnt] > 0)
{
printf("%c -- %d\t", cnt, kmozi[cnt]);
aknt = 0;
while(kmozi[cnt] > aknt)
{
printf("* ");
++aknt;
}
printf("\n");
}
}
return(0);
}
という感じで作ったのですが
これを実行すると
Run-Time Check Failure #2 - Stack around the variable 'kmozi' was corrupted.
(Press Retry to debug the application)
というデバックエラーが起こるのですがどうすればこのエラーが出なくなるのか教えてもらえませんでしょうか?
よろしくお願いします。
今作っているコードで
標準入力から文字列を読み込み、その中のアルファベットの出現回数(文字「a」が何回、文字「b」が何回、…)を計算し、出現回数が1以上の文字について次のように表示(文字・出現回数・グラフ)するプログラムを書け。
結果
input string: Tokyo Osaka Nagoya
N --1 *
O --1 *
T --1 *
a --4 ****
g --1 *
k --2 **
o --3 ***
s --1 *
y --2 **
というコードを作って
#include<stdio.h>
int main(void)
{
int kmozi[301];
int cnt = 0, mcnt, aknt;
char buff[256];
printf("文字列入力:");
gets(buff);
while(kmozi[cnt] <= 299)
{
kmozi[cnt] = 0;
cnt++;
}
//scanf("%s", buff);
for(cnt = 0;kmozi[cnt] <= 126;++cnt)
{
//kmozi[cnt] = 0;
for(mcnt = 0;buff[mcnt] != '\0';++mcnt)
{
if (buff[mcnt] == cnt)
{
kmozi[cnt] += 1;
}
}
if (kmozi[cnt] > 0)
{
printf("%c -- %d\t", cnt, kmozi[cnt]);
aknt = 0;
while(kmozi[cnt] > aknt)
{
printf("* ");
++aknt;
}
printf("\n");
}
}
return(0);
}
という感じで作ったのですが
これを実行すると
Run-Time Check Failure #2 - Stack around the variable 'kmozi' was corrupted.
(Press Retry to debug the application)
というデバックエラーが起こるのですがどうすればこのエラーが出なくなるのか教えてもらえませんでしょうか?
よろしくお願いします。