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

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

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

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

解決済

C言語での配列の書き方

yuto_jake
yuto_jake

総合スコア40

C

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

1回答

0リアクション

0クリップ

374閲覧

投稿2022/06/01 11:00

C言語を使用して、タスク情報を記録できるシステムを作成しています。addtaskで受け取った情報をソース分けして昇順降順に並べられるように配列を使いたいのですが、当方初心者なため手当たり次第情報を探しているのですが一向に理解できない状態です。。
以下にソースコードをupしますので、arrayのコードの書き方方法をご教授いただけますと幸いです。

c

#include <stdio.h> #include <stdlib.h> void addtask(); void deletetask(); void viewtask(); void edittask(); char menu(); int main() { char selection; do { selection = menu(); switch(selection) { case '1': addtask(); break; case '2': viewtask(); break; case '3': edittask(); break; case '4': deletetask(); break; case '5': printf("\nThank you for using Task manager!!^^"); exit(0); default: printf("\nYou entered wrong choice..."); printf("\nPress any key to try again"); break; } } while(selection != '9'); return 0; } char menu() { printf("\n\n\nWelcome to Task Management System!"); printf("\nThis is Main Menu"); char option; printf("\n1) Add New Task"); printf("\n2) Check your Task"); printf("\n3) Edit your Task"); printf("\n4) Delete your Task"); printf("\n5) Exit"); printf("\nEnter your choice:"); scanf("%c[^\n]", &option); return option; } void addtask() { int duedate, p; char tsn[50]; char cat[20]; printf("\n***** This is add new Task *****"); FILE * f = fopen("data.txt", "r+"); if(f == NULL) f = fopen("data.txt", "w"); else { fseek(f, 0, SEEK_END); printf("\nEnter your Task name:"); scanf("%s", tsn); printf("\nEnter your Task due date[ex:31052022]:"); scanf("%d", &duedate); printf("\nEnter your Task progression[0~100]:"); scanf("%d", &p); printf("\nEnter Task category:"); scanf("%s", cat); fprintf(f,"%s %d %d %s\n", tsn, duedate, p, cat); printf("\nYour task is just added successfully!"); } fclose(f); } void viewtask(){ //ソート降順昇順 int duedate, p; char tsn[50]; char cat[20]; printf("\n***** Viewing Task Menu *****"); printf("\nThis is your task >>"); FILE * f = fopen("data.txt", "r"); while(fscanf(f,"%s",&tsn) != EOF){ fscanf(f,"%d", &duedate); fscanf(f,"%d",&p); fscanf(f,"%s",&cat); printf("\n Task name: %s \t Task due date: %d \t Task progression: %d \t Task category: %s",tsn, duedate, p, cat); } fclose(f); } void edittask() { char tsn[50]; char ntsn[50]; char cat[20]; int p, duedate; FILE * f = fopen("data.txt", "r"); FILE * ft = fopen("ndata.txt", "w"); printf("\n***** This is Edit your Task *****"); printf("\nEnter the name of the Task you want to edit:"); scanf("%s", &ntsn); while(fscanf(f,"%s",&tsn) != EOF) { fscanf(f,"%d", &duedate); fscanf(f,"%d",&p); fscanf(f,"%s",&cat); if (strcmp(tsn, ntsn) == 0) { printf("\nUpdating::: Task name: %s \t Task due date: %d \t Progression: %d \t Task category: %s",tsn, duedate, p, cat); printf("\nEnter new Task name:"); scanf("%s", &tsn); printf("\nEnter new due date:"); scanf("%d", &duedate); printf("\nEnter new Progression[0.00~100]:"); scanf("%d", &p); printf("\n\nEnter new Task category:"); scanf("%s", &cat); printf("\nYour task is edited now!"); } else { printf("The Task does not exist"); } fprintf(ft,"%s %d %d %s\n", tsn, duedate, p, cat); } fclose(ft); fclose(f); remove("data.txt"); rename("ndata.txt", "data.txt"); } void deletetask() { char tsn[50]; char ntsn[50]; char cat[20]; int p, duedate; FILE * f = fopen("data.txt", "r"); FILE * ft = fopen("ndata.txt", "w"); printf("\n***** This is delete task *****"); printf("\nEnter Task name which you want to delete:"); scanf("%s", &ntsn); while(fscanf(f,"%s",&tsn) != EOF) { fscanf(f,"%d", &duedate); fscanf(f,"%d",&p); fscanf(f,"%s",&cat); if (strcmp(tsn, ntsn) == 0) { printf("\nDelete >> Task name: %s \t Task due date: %d \t Progression: %d \t Task category: %s",tsn, duedate, p, cat); printf("\nThe task is just deleted!"); continue; } else { printf("The Task does not exist"); } fprintf(ft,"%s %d %d ca\n", tsn, duedate, p, cat); } fclose(ft); fclose(f); remove("data.txt"); rename("ndata.txt", "data.txt"); }

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/06/01 11:34

こちらの質問が複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

episteme

2022/06/01 11:15 編集

配列の使い方 はどんなショボい教本でも必ず書かれているはずですが。なにがわからんのですか?
yuto_jake

2022/06/01 11:27

epistemeさん、ご連絡ありがとうございます。 配列の使い方はあらかた理解していると思っております。しかし今回書こうと思っているコードでは分からなかった点は、printfで入力を受け取った文字または数値を、arrayに入れるコードの書き方が分からなかったため、質問させていただきまた。
BeatStar

2022/06/01 11:47

(本当に分かっているのかな…?) そもそもprintf関数は「標準出力」、つまりコンソールに文字や数字等を表示するためのものです。 scanf関数では? コードが提示されているからわからんでもないけど、文章だけで提示されていたら意味不明になってしまいますよ。定義が違うから。足し算をしているのに「引き算がわからないのです」というぐらい前提が滅茶苦茶。 それと「関数」の項目があるはずです。入門書やサイトに。そこも読んでみましょう。 [質問者さんに必要そうなもの] ■ 配列 ■ 関数 ■ 引数/仮引数 ■ 戻り値
episteme

2022/06/01 12:34

↑■ 構造体 を追加。
episteme

2022/06/01 13:21 編集

「受け取った文字または数値を、arrayに入れるコードの書き方が分からなかった」 なら 「配列の使い方はあらかた理解していると思って」いけないのでは? だって使えてないんだもん。
yuto_jake

2022/06/01 13:32

おっしゃる通りですね。ご教授どうもありがとうございました。
FiroProchainezo

2022/06/01 14:16

int main()からmenuを呼んでselectionに入れてるように見えますが、menuで宣言したoptionはmainで使えましたっけ?

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C

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