実現したい事
C言語で日時を複数文字取得して、表示する関数を作成したいです。
何日か前にも「日時を取得して、表示する関数を作成したい」と質問しましたがそれとは別です。
表示例
2020年07月19日 13時50分01秒
2020年07月19日 13時50分02秒
2020年07月19日 13時50分03秒
2020年07月19日 13時50分04秒
2020年07月19日 13時50分05秒
2020年07月19日 13時50分06秒
2020年07月19日 13時50分07秒
上のように1秒ずつ表示されるようにしたい
該当のソースコード
c
1#include <stdio.h> 2#include <time.h> 3 4#define STX 0x02 /* テキスト開始 */ 5#define ETX 0x03 /* テキスト終了 */ 6 7static char str[] = "9999年99月99日 99時99分99秒"; 8static int int_c[] = { 0, 1, 2, 3, 6, 7, 10, 11, 16, 17, 20, 21, 24, 25}; /* 上の配列strの間接的な添え字 */ 9 10/* 11 名称 timer_data_n 12 引数 char *timer_str:日時([STX]YYYYMMDDHHMMSS[ETX])中の複数文字 13 int timer_len:日時([STX]YYYYMMDDHHMMSS[ETX])中の文字数 14 戻り値 無し 15*/ 16/*----- ここより下に解答を記述してください -----*/ 17void timer_data_n(char *timer_str, int timer_len) 18{ 19 static int i = 0; 20 static int j; 21 static int flag = 0; 22 23 if (timer_str[i + 0] == STX){ 24 flag = 1; 25 }else if (timer_str[i + 0] == ETX && i == 14){ 26 printf("%s\n", str); 27 flag = 0; 28 i = 0; 29 }else if (flag == 1){ 30 for (j = 0; j < timer_len; j++){ 31 str[int_c[i]] = timer_str[i + 0]; 32 i++; 33 } 34 } 35 return; 36} 37/*----- ここより上に解答を記述してください -----*/ 38 39int main(void) 40{ 41 time_t current; 42 struct tm *timer; 43 int tm_sec = 0; 44 char str[20]; 45 int i, j, k; 46 char str_snd[20]; 47 48 /* 乱数の初期化 */ 49 srand(time(NULL)); 50 i = rand() % 15; 51 52 k = 0; 53 54 while(1){ 55 current = time(NULL); 56 timer = localtime(¤t); 57 if(timer->tm_sec != tm_sec){ 58 *(str + 0) = STX; 59 sprintf(str + 1,"%04d%02d%02d%02d%02d%02d", 60 timer->tm_year + 1900, timer->tm_mon + 1, timer->tm_mday, 61 timer->tm_hour, timer->tm_min, timer->tm_sec); 62 *(str + 15) = ETX; 63 *(str + 16) = '\0'; 64 65 while(*(str+i)){ 66 /* 乱数の初期化 */ 67 srand(time(NULL)); 68 j = rand() % 6 + 1; 69 70 while(k < j){ 71 if(i >= 16){ 72 break; 73 } 74 75 str_snd[k] = *(str + i); 76 i++; 77 k++; 78 } 79 str_snd[k] = 0; 80 81 timer_data_n(str_snd, k); 82 83 k = 0; 84 } 85 86 tm_sec = timer->tm_sec; 87 i = 0; 88 } 89 } 90 91 return 0; 92}
発生している問題・エラーメッセージ
コンパイルエラーは起きていませんが何も表示されません。関数部分のプログラムは、何日か前に質問した「日時を取得して、表示する関数を作成したい」、の関数を一部変えて使いまわしています。詳しくは実際に記事を見ていただければ嬉しいです。前回の時とは違い、カーソルも全く反応しないので何がいけないのかわからないので教えてほしいです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/07/19 09:21