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

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

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

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

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

3回答

850閲覧

C言語で文字列表記の日付からその曜日を求めるコードのエラー

退会済みユーザー

退会済みユーザー

総合スコア0

C

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

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

0クリップ

投稿2018/01/09 13:19

###前提・実現したいこと
C言語で文字列表記の日付からその曜日を求めるコードを書いています。以下のように実行されて欲しいです。

./trial.c 2018/01/10 2018/01/10 is Wednesday

###発生している問題・エラーメッセージ
参考サイトで紹介されていたコードを実行してみましたが、コンパイル時にエラーが出てしまいました。
参考サイト

% gcc -Wall trial.c -o trial trial.c: In function ‘main’: trial.c:12:3: warning: implicit declaration of function ‘memset’ [-Wimplicit-function-declaration] memset(&tm, 0, sizeof(tm)); ^ trial.c:12:3: warning: incompatible implicit declaration of built-in function ‘memset’ trial.c:12:3: note: include ‘<string.h>’ or provide a declaration of ‘memset’

###該当のソースコード

C

1/* header files */ 2#include <stdio.h> 3#include <stdlib.h> 4#include <time.h> 5 6/* functions */ 7int GetDayOfWeek(int year, int month, int day); 8void DisplayWeek(int wday); 9 10/* main */ 11int main(void) { 12 int year = 2009; 13 int month = 4; 14 int day = 20; 15 int week; 16 17 /* 日付の表示 */ 18 printf("%d/%d/%d: ", year, month, day); 19 20 /* 曜日を求める */ 21 week = GetDayOfWeek(year, month, day); 22 23 /* 曜日の表示 */ 24 DisplayWeek(week); 25 26 return EXIT_SUCCESS; 27} 28 29/** 30 * 曜日を求める 31 * @param[in] year 年 32 * @param[in] month 月 33 * @param[in] day 日 34 * @return 曜日(0を日曜日とする. エラー時は-1を返す) 35 */ 36int GetDayOfWeek(int year, int month, int day) { 37 struct tm time_in, *local; 38 time_t t; 39 40 /* 年月日を入力 */ 41 time_in.tm_year = year - 1900; /* 年 */ 42 time_in.tm_mon = month - 1; /* 月 */ 43 time_in.tm_mday = day; /* 日 */ 44 45 /* 時分秒曜日を適当に入力 */ 46 time_in.tm_hour = 1; /* 時 (適当に入力) */ 47 time_in.tm_min = 0; /* 分 (適当に入力) */ 48 time_in.tm_sec = 0; /* 秒 (適当に入力) */ 49 time_in.tm_wday = 0; /* 曜日 (適当に入力) */ 50 time_in.tm_yday = 0; /* 1月1日からの日数 (適当に入力) */ 51 52 /* mktime 関数で変換 */ 53 if ( (t = mktime(&time_in) ) == (time_t)(-1) ) { 54 return -1; 55 } 56 57 /* 地方時に変換 */ 58 local = localtime(&t); 59 60 return local->tm_wday; 61} 62 63/** 64 * 曜日を表示する 65 * @param[in] wday 曜日(0を日曜日とする) 66 */ 67void DisplayWeek(int wday) { 68 char weeks[][16] = { 69 "Sunday", 70 "Monday", 71 "Tuesday", 72 "Wednesday", 73 "Thursday", 74 "Friday", 75 "Saturday" 76 }; 77 78 printf("%s\n", weeks[wday]); 79}

###補足情報(言語/FW/ツール等のバージョンなど)
GNU Emacs 24.5.1

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

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

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

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

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

guest

回答3

0

ベストアンサー

  • warningはエラーとは違います
  • 該当のソースとして貼られたソースが問題部分のない別物です
  • メッセージを読む努力をしましょう

参考に適当訳すると

trial.c: In function ‘main’:

trial.c: 関数'main'において

trial.c:12:3: warning: implicit declaration of function ‘memset’ [-Wimplicit-function-declaration]

trial.c:12行:3文字目: 警告: 関数'memset'の暗黙の関数宣言[-Wimplicit-function-declaration]

trial.c:12:3: warning: incompatible implicit declaration of built-in function ‘memset’

trial.c:12行:3文字目: 警告: ビルトイン関数'memset'の非互換な暗黙の関数宣言

trial.c:12:3: note: include ‘<string.h>’ or provide a declaration of ‘memset’

trial.c:12行:3文字目: メモ: '<string.h>'のインクルードもしくは'memset'の宣言をしよう


暗黙の関数宣言(implicit function declaration)

(少し古い)C言語は関数の宣言なしに関数を呼び出すと
「int型を返しいくつか(もしくは0個の)引数を取る関数」が宣言されているものとして扱います。

投稿2018/01/09 13:50

asm

総合スコア15147

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

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

退会済みユーザー

退会済みユーザー

2018/01/09 23:05

ご回答と丁寧なご説明をいただきましてありがとうございました。
guest

0

エラーじゃなくて警告ですね。エラーと警告の区別は付けましょう。
そこに書いてある通り、#include <string.h>すればいいのでは?

投稿2018/01/09 13:29

otn

総合スコア84498

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

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

otn

2018/01/09 16:21

メッセージのどの辺の意味がわからなかったのかを書くと、今後のためにもっと役に立つアドバイスが得られるかも知れません。
退会済みユーザー

退会済みユーザー

2018/01/09 23:05

ご回答と的確なアドバイスをいただきましてありがとうございました。
guest

0

つ#include <string.h>

投稿2018/01/09 13:23

編集2018/01/09 13:36
hichon

総合スコア5737

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

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

退会済みユーザー

退会済みユーザー

2018/01/09 23:05

ご回答いただきましてありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問