プロが教えるわが家の防犯対策術!

#include <stdio.h>
int main(void)
{
char str[] = "0123456789";
int i = 0;
int num = 0;
int num2 = 0;
int num3 = 0;
int num4 = 0;
num = atoi(str);
//文字としての0ではなく、数値としての0を表示するには?
printf("str[i] = '%d'\n", str[4]-48);

printf("*(str + i) = '%c'\n", *(str + i));
printf("&str[i] = %p\n", &str[i]);
printf("str + i = %p\n", str + i);
printf("&*(str + i) = %p\n", &*(str + i));
printf("int型変数numの値は: %d\n", num);
i = i + 3;
num2 = atoi(str[i]);
i = i + 3;
num3 = atoi(str[i]);
num4 = num2 + num3;
printf("int型変数num4の値は: %d\n", num4);


}
において、2+5をしてら7をnum4で表示したいのですが、なぜか表示されません。
どなたか原因はわかりますでしょうか?
あるいはなにが足りないのでしょうか?

A 回答 (2件)

コード中に



// atoiは文字列を数値にするものであって文字を数値にするものではない

という補足を記載しました
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます!

お礼日時:2021/02/21 15:23

はいどうぞ



#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char str[] = "0123456789";
int i = 0;
int num = 0;
int num2 = 0;
int num3 = 0;
int num4 = 0;
num = atoi(str);
//文字としての0ではなく、数値としての0を表示するには?
printf("str[i] = '%d'\n", str[4]-48);

printf("*(str + i) = '%c'\n", *(str + i));
printf("&str[i] = %p\n", &str[i]);
printf("str + i = %p\n", str + i);
printf("&*(str + i) = %p\n", &*(str + i));
printf("int型変数numの値は: %d\n", num);
i = 2;
num2 = str[i]-'0'; // atoiは文字列を数値にするものであって文字を数値にするものではない
i = 5;
num3 = str[i]-'0';
num4 = num2 + num3;
printf("int型変数num4の値は: %d\n", num4);


}
    • good
    • 1
この回答へのお礼

ありがとうこざいます。
ちなみに、原因はなんだったのでしょうか?

お礼日時:2021/02/21 14:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!