私は初心者であり、私の英語はあまり良くありません。私は文字列内の数値を集計しようとしています(a14fg5pk145の場合、14 + 5 + 145を返します)、それが機能しません。 "例外がスローされました:読み取りアクセス違反 strが0x61でした。例外がスローされました:読み取りアクセス違反
この私に私のコード:機能SumStr
へ
void main()
{
int x, i;
char* pp;
char buffer[SIZE];
printf("Please enter numbers and letters:\n");
gets(buffer);
pp = buffer;
x = SumStr(*pp);
printf("%d", x);
}
int SumStr(char* str)
{
int sum=0, num=0, flag = 0;
while ((*str) != '\0')
{
while (((*str) > '1') && ((*str) < '9'))
{
if (flag == 0)
{
num += (*str);
flag = 1;
}
else if (flag == 1)
num = num * 10 + (*str);
str++;
}
if (flag == 0)
str++;
sum += num;
num = 0;
flag = 0;
}
return sum;
}
もう一つのアドバイス: '((* STR)> '1')&&((* STR)< '9') 'は' isdigit(* str) 'です。標準的なライブラリを使用して、ホイールを再発明しないでください。 – DyZ
番号にゼロを入れないでください。実際には、あなたは '0'、' 1'、 '9'を除外しています。これは珍しいことです。 –
SOはデバッグサービスではありません。シンボルでコンパイルするには、デバッガ内でコードを実行し、プログラムを1行ずつトレースして、関連する変数の値を調べ、実際に何が起こっているのかを調べます。 *具体的な質問が発生した場合は、ここに戻って自由に感じてください。 – alk