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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

1357閲覧

C言語、時計の表示から…

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2020/08/21 14:15

C言語を使って問題を解いています。問題は以下のようなものです。

時刻が12:34、01:03というように、4桁の数字と間の:で表される。(24時間表記を採用する)これを

12
34 や、

1
3 というように数字の部分だけ、時間と分で行がえして表したい。また、時刻、分ともに十のくらいが0であれば0を除くこと。

この問題の「0を除く」部分の書き方が分かりません。それ以外の部分は記述することができました。
以下に示します。

#include <stdio.h>
#include <string.h>
int main(void){
char buf[1000];
char str[1000];

fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%s", &str);

char *tp;
tp = strtok(str, ":");
printf("%s\n", tp);

tp = strtok(NULL, ":");
printf("%s\n", tp);
}

strtokで区切るところを":0"にしてみたりもしましたが、それをすると00:00で何も出力されなくなり、やはりダメかという感じでした。

「十のくらいの0」を除く部分はどうしたら良いのか、ご教授ください。恐縮ですが初学者ですので易しめにお願いいたします

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

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

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

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

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

guest

回答3

0

C

1#include <stdio.h> 2#include <string.h> 3 4int main() { 5 6 char str[] = "01:00:30"; 7 char* tp; 8 9 for ( tp = strtok(str, ":"); tp != NULL; tp = strtok(NULL,":") ) { 10 printf("%s\n", tp[0] == '0' ? tp+1 : tp); 11 } 12 return 0; 13}

※ あ、カブった...

投稿2020/08/21 16:06

episteme

総合スコア16612

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

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

退会済みユーザー

退会済みユーザー

2020/08/24 14:34

それでも大助かりです、ありがとうございます!
guest

0

ベストアンサー

2箇所あるstrtokの次の行に、それぞれ以下のコードを挿入。

C

1if (*tp == '0') { 2 tp++; 3}

投稿2020/08/21 14:43

Daregada

総合スコア11990

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

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

退会済みユーザー

退会済みユーザー

2020/08/21 14:49

回答ありがとうございます! 十のくらいが0ならば次(一の位)に進めるという感じですかね
Daregada

2020/08/21 14:55

「4桁の数字と間の:で表される」と規程されているので、規定外の入力が来ないという条件が成立するなら、これでいけます。
退会済みユーザー

退会済みユーザー

2020/08/24 14:36

具体的なコードもいただき、無事記述することができました。似た回答をくださった方もいらっしゃいますが、早くから回答いただいたのでベストアンサーとさせて頂きます!ありがとうございました!!
guest

0

時、分を文字列から分割して、整数に変換し、
printfで、"%d"でプリントすればいいです

投稿2020/08/21 14:23

y_waiwai

総合スコア88042

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

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

退会済みユーザー

退会済みユーザー

2020/08/21 14:27

回答ありがとうございます。すみません、まだ分からなくて… 文字列で分割するところまでは終わっていますが、「整数に変換」はどのようにすれば良いですか…?
y_waiwai

2020/08/21 14:31

「C言語 文字列 整数 変換」でぐぐってみよう。 #まだまだ学習の必要があるようですね
退会済みユーザー

退会済みユーザー

2020/08/21 14:45

そうします、ごめんなさい…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問