質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

4回答

885閲覧

C++ int*をint で比較したいです

Usagi365m

総合スコア16

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/07/09 12:54

//入力例1
10:31
//入力例2
00:00
//入力例3
01:03

という入力があったとき
":"を削除し、二桁が0だった場合0を消し、00だった場合、0だけになり、最後に末尾を改行して

//1出力
10
31
//2出力
0
0
//3入力
1
3

と出力したいです。
strtokで分解した、char *型をなんとかint型にして10以上は0を消さないように処理したいのですが、方法が見つからず苦戦しております。
回答よろしくおねがいします

C++

1#include <iostream> 2#include <stdio.h> 3#include <string.h> 4using namespace std; 5int main(void){ 6 int *p; 7 char* tp; 8  char str[100]; 9 fgets(str, sizeof(str), stdin); 10 11//ここで:を消去 12 tp = strtok(str,":"); 13//tpの文字を整数型に変更したい 14 p = (int *)tp; 15 16 if(p != 00 || p >= 10 ){ //ここでエラーが発生します 17 cout << tp << endl; 18 } 19 20 else{ 21 cout << 0 << endl; 22 } 23 24//後半も同じように処理する 25 tp = strtok(NULL,":"); 26 p = (int *)tp; 27 28 if(p != 00 || p >= 10 ) 29 cout << tp << endl; 30 } 31 else{ 32 cout << 0 << endl; 33 } 34 return 0; 35}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

これでいい?

text

1usr ~/Project/test % ./a.out 212:30 312 430 5usr ~/Project/test % ./a.out 61:3 71 83 9usr ~/Project/test % ./a.out 100:0 110 120

ソース

c

1#include <iostream> 2#include <cstdio> 3// 4using namespace std; 5// 6int main(void) 7{ 8 int hi, lo; 9 char str[100]; 10 11 fgets(str, sizeof(str), stdin); 12 13 if(sscanf(str,"%d:%d",&hi, &lo) != 2) { 14 cerr << "error" << endl; 15 } 16 printf("%d\n%d\n", hi,lo); 17 18 return 0; 19}

投稿2020/07/09 13:56

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Usagi365m

2020/07/09 19:21

完璧です! 回答ありがとうございました!!
guest

0

strtolを使った例。

C++

1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4#include <iostream> 5using namespace std; 6 7int main(void) { 8 int n; 9 char *tp; 10 char str[100]; 11 fgets(str, sizeof(str), stdin); 12 13 tp = strtok(str, ":"); 14 n = strtol(tp, NULL, 10); 15 cout << n << endl; 16 17 tp = strtok(NULL, ":"); 18 n = strtol(tp, NULL, 10); 19 cout << n << endl; 20 21 return 0; 22}

投稿2020/07/09 13:17

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Usagi365m

2020/07/09 19:23

なるほど!こうやってやるんですね! 勉強になりました!! 回答ありがとうございます!
guest

0

欲しいのは atoi 関数でしょうか?
C 文字列 数値 変換 とか C 文字列 整数 変換とかでググるといいですよ。何をキーワードとして検索すると目的のものが見つかるのか、を学びましょう。

cpp

1#include <iostream> 2#include <string.h> 3using namespace std; 4 5int main(){ 6 char str[100] = "10:30"; 7 char* tp; 8 int i; 9 tp = strtok(str, ":"); 10 i = atoi(tp); 11 12 if (i > 5) { 13 cout << tp << "は5より大きい" << endl; 14 } else { 15 cout << tp << "は5以下" << endl; 16 } 17 return 0; 18}

投稿2020/07/09 13:13

bboydaisuke

総合スコア5277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Usagi365m

2020/07/09 19:25

atoi関数で簡単に解決できたのですね・・・ 勉強になりました!ありがとうございます!
guest

0

文字列をコロンで2つに分解し、そのそれぞれを整数変換しましょう

投稿2020/07/09 13:08

y_waiwai

総合スコア87784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問