重複の可能性:
文字列への書き込み時にセグメンテーション違反が発生するのはなぜですか?
char a[] = “string”; の違いは何ですか? および char *p = 「文字列」;
障害を見つけましたが、理由がわかりません。私を助けてくれませんか?
メイン関数でchar str[]
代わりに を定義すると、正常に動作します。そうしないと、の行がクラッシュしますchar * str
*pSlow = *pFast;
"Unhandled exception at 0x012314f3 in shanchu.exe: 0xC0000005: Access violation writing location 0x0123583c."
ありがとう
#include <stdio.h>
#include <string.h>
#include <iostream>
char * delChar(char *s,int iLen)
{
if((s == NULL) || iLen <= 0)
{
return NULL;
}
int i;
const int MAXLEN = 26;
unsigned int min,hashTable[MAXLEN];
for(i = 0;i < MAXLEN;i ++)
{
hashTable[i] = 0;
}
for(i = 0;i < iLen;i ++)
{
hashTable[*(s + i) - 'a'] ++;
}
while(hashTable[i] == 0)
{
i ++;
}
min = hashTable[i];
for(i = 0;i < MAXLEN;i ++)
{
if(hashTable[i] != 0)
{
if(hashTable[i] < min)
{
min = hashTable[i];
}
}
}
char *pSlow = s;
char *pFast = s;
while(*pFast != '\0')
{
if(hashTable[*pFast - 'a'] != min)
{
*pSlow = *pFast;
pSlow ++;
}
pFast ++;
}
*pSlow = '\0';
return s;
}
int main()
{
char* str = "abadccdehigiktk";
int iLen = strlen(str)/sizeof(char);
char *tmp = delChar(str,iLen);
printf("%s\n",tmp);
system("pause");
}