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

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

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

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

1回答

1370閲覧

テキストファイルを分割して表示する方法

suguri

総合スコア0

C

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2021/07/04 15:36

編集2021/07/05 00:18

基礎的な事にしようと思い、質問内容を変えさせていただきました。

alph.txtにはアルファベットの文字列が書かれており、今は6文字目を指定してabcdefが表示されるようになものは出来ました。

表示は
abcdef
ghij.....
のようにしたいのですが、
abcdef
abcdefgh….
になってしまいます。

同じファイルを参照している為、配列の中身を16で指定すればそうなってしまう事はわかるのですが、どのように改変したら良いでしょうか。
また、ifを繰り返してしまい見づらいコードになってしまいました。申し訳ございません。

コード #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main(void) { int fd; int fd2; char buf[256]; char buf2[256]; if ((fd = open("alph.txt", O_RDONLY)) == -1) { perror("open"); exit(1); } if ((fd2 = open("alph.txt", O_RDONLY)) == -1) { perror("open"); exit(1); } if (read(fd, buf, 6) != 6) { perror("read"); exit(1); } if (read(fd2,buf2,16)!= 16){ perror("read"); exit(1); } buf[6] = '\0'; //6文字めまで表示 buf2[16]='\0'; printf("%s\n", buf); printf("%s\n",buf2); if (close(fd) == -1) { perror("close"); exit(1); } if (close(fd2) == -1) { perror("close"); exit(1); } return 0; }

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

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

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

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

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

kazuma-s

2021/07/04 16:33

分割数をキーボードから入力する部分すら満足に書けていないということは Cプログラミングを基礎から教えてほしいということでしょうか? なんとなくの道筋だから main も書いていないのですか?
suguri

2021/07/04 16:51

なんとなくの道筋で書いていました。 ただ、まだ理解が乏しいので出来れば基礎から教えて頂けると幸いです。
kazuma-s

2021/07/04 17:16

main が追加されましたが、コンパイルエラーになります。 「char x[256]; //分割する値」 分割する値って int じゃないんですか? ここまで基礎が分かっていない人に教えるのはとてつもない労力が必要です。 申し訳ありませんが、基礎は入門書で学んでください。 今までどのように C を学習して来たのでしょうか?
BeatStar

2021/07/04 18:28

プログラミングは『こう書けば良い』ではないです。 なので基礎からやりましょう。
gentaro

2021/07/04 19:15

C#無関係なんでタグを外してほしい
退会済みユーザー

退会済みユーザー

2021/07/04 23:15

C# のタグを外してください。C# のタグで見ている閲覧者にはこのスレッドはノイズにしかならず迷惑ですので。
Zuishin

2021/07/04 23:48

なぜ C まで外すんだろう。 自分が何の言語を使ってるかわかってないのかな?
dodox86

2021/07/04 23:51

> f以降を表示するにはどうしたら良いですか? 勉強をしようとしているのでしょうから、まずご自身で解決できるよう考えましょうよ。「どうしたら良いか」と言う質問に対しての回答は大抵、直接的なものにしかなりません。それは丸投げです。
Zuishin

2021/07/05 00:08

それでなぜ C# にした?
Zuishin

2021/07/05 00:15

C++ じゃなくて C なんじゃないの? 正確に書かなきゃ動かないのがプログラムだから、細かいことを気にしない雑な人はプログラミングできないよ。 職業訓練校なら時間を無駄にする前にコース替えたら?
suguri

2021/07/05 00:20

申し訳ございません。 文系でプログラミングをほとんどやった事が無かったので詳しく分からずお聞きしてしまいしました。 基礎からもう一度勉強しようと思います。 質問削除できない為このままにさせて頂きますが回答しなくて大丈夫です。 お騒がせ致しました。
BeatStar

2021/07/05 00:55

文系だからとかは関係ありません。 私も所謂文系ですが、『基礎は大事』であることと『丸投げは無意味であること』は経験的に知っています。 文系だからとか言い訳するならやめておいたほうがいいですよ。
dodox86

2021/07/05 01:10

> 質問削除できない為このままにさせて頂きますが回答しなくて大丈夫です。 とりあえず、質問の削除依頼は出せます。 [質問・回答を消去したい] https://teratail.com/help#delete-question
guest

回答1

0

ひんと

C

1#include <stdio.h> 2 3// str の 先頭から n 文字を result にコピーする 4void first_to_n(const char str[], int n, char result[]) { 5 int i; 6 for ( i = 0; i < n; ++i ) { 7 result[i] = str[i]; 8 } 9 result[i] = '\0'; 10} 11 12// str の n文字目以降を result にコピーする 13void n_to_last(const char str[], int n, char result[]) { 14 int i; 15 for ( i = 0; str[i+n] != '\0'; ++i ) { 16 result[i] = str[i+n]; 17 } 18 result[i] = '\0'; 19} 20 21int main() { 22 char input[] = "abcdefghijklmnopqrstuvwxyz"; 23 char head[100]; 24 char tail[100]; 25 26 int n = 6; 27 first_to_n(input, n, head); // 前半 28 n_to_last(input, n, tail); // 後半 29 printf("[%s] [%s]\n", head, tail); 30 31 return 0; 32}

投稿2021/07/05 01:22

episteme

総合スコア16612

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問