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

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

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

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

Q&A

解決済

1回答

2422閲覧

c言語で改行までの文字を取り出したいです。

pokemonta

総合スコア170

C

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

0グッド

0クリップ

投稿2021/04/20 04:06

配列の構造体から住所を一つ取ると
不要な改行が含まれます。これを除去して
取得する方法がありませんか?

table[i].addの1回目で以下が取得される。

c

1osaka 2 3

table[i].addの2回目で以下が取得される。

c

1tokyo 2 3

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

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

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

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

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

y_waiwai

2021/04/20 04:23 編集

具体的な構造体のコードと、具体的なデータ例を提示しよう
thkana

2021/04/20 12:14

方法があるかないかと聞かれれば、「きっとあるでしょう」という答えになります。質問に書いてある情報から言えるのはその程度ですが、それはあなたの聞きたいことですか?
guest

回答1

0

ベストアンサー

改行文字の直前までを表示すればよいではありませんか?

C

1#include <stdio.h> // printf 2#include <string.h> // strlen 3 4struct { char add[80]; } table[2] = { "osaka\n", "tokyo\n" }; 5 6int main(void) 7{ 8 for (int i = 0; i < 2; i++) 9 printf("[%.*s]\n", (int)strlen(table[i].add)-1, table[i].add); 10}

表示ではなくて取り出したいのなら、sscanf を使えばよいでしょう。

C

1#include <stdio.h> // sscanf, puts 2 3struct { char add[80]; } table[2] = { "osaka\n", "tokyo\n" }; 4 5int main(void) 6{ 7 for (int i = 0; i < 2; i++) { 8 char s[80]; 9 sscanf(table[i].add, "%79[^\n]", s); 10 puts(s); 11 } 12}

投稿2021/04/20 16:39

編集2021/04/20 18:18
kazuma-s

総合スコア8224

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

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

pokemonta

2021/04/20 23:32

%79 ってなんでしょうか?
kazuma-s

2021/04/21 00:16

char の配列 s の要素数が 80 なので、文字列を入れるとしたら、 終端の '\0' を除いて 79文字しか入りません。 そこで、入力文字数の制限を付けました。 回答のコードでは char add[80]; なので、"[^\n]" でも構いません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問