基礎的な事にしようと思い、質問内容を変えさせていただきました。
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; }
分割数をキーボードから入力する部分すら満足に書けていないということは
Cプログラミングを基礎から教えてほしいということでしょうか?
なんとなくの道筋だから main も書いていないのですか?
なんとなくの道筋で書いていました。
ただ、まだ理解が乏しいので出来れば基礎から教えて頂けると幸いです。
main が追加されましたが、コンパイルエラーになります。
「char x[256]; //分割する値」
分割する値って int じゃないんですか?
ここまで基礎が分かっていない人に教えるのはとてつもない労力が必要です。
申し訳ありませんが、基礎は入門書で学んでください。
今までどのように C を学習して来たのでしょうか?
プログラミングは『こう書けば良い』ではないです。
なので基礎からやりましょう。
C#無関係なんでタグを外してほしい
C# のタグを外してください。C# のタグで見ている閲覧者にはこのスレッドはノイズにしかならず迷惑ですので。
なぜ C まで外すんだろう。
自分が何の言語を使ってるかわかってないのかな?
> f以降を表示するにはどうしたら良いですか?
勉強をしようとしているのでしょうから、まずご自身で解決できるよう考えましょうよ。「どうしたら良いか」と言う質問に対しての回答は大抵、直接的なものにしかなりません。それは丸投げです。
それでなぜ C# にした?
C++ じゃなくて C なんじゃないの?
正確に書かなきゃ動かないのがプログラムだから、細かいことを気にしない雑な人はプログラミングできないよ。
職業訓練校なら時間を無駄にする前にコース替えたら?
申し訳ございません。
文系でプログラミングをほとんどやった事が無かったので詳しく分からずお聞きしてしまいしました。
基礎からもう一度勉強しようと思います。
質問削除できない為このままにさせて頂きますが回答しなくて大丈夫です。
お騒がせ致しました。
文系だからとかは関係ありません。
私も所謂文系ですが、『基礎は大事』であることと『丸投げは無意味であること』は経験的に知っています。
文系だからとか言い訳するならやめておいたほうがいいですよ。
> 質問削除できない為このままにさせて頂きますが回答しなくて大丈夫です。
とりあえず、質問の削除依頼は出せます。
[質問・回答を消去したい] https://teratail.com/help#delete-question