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

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

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

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1140閲覧

printf()で.objファイルを一行ずつ画面に表示させると文字化けする原因が知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/09/27 12:36

提示コードのwhile();文のコードですがなぜ文字化けしてしまうのでしょうか?継続条件で改行が来たらループを抜けるように処理を記述しているのですがなぜ最後に文字化けするのでしょうか?

イメージ説明

obj

1# Blender v2.83.6 OBJ File: '' 2# www.blender.org 3mtllib untitled.mtl 4o Cube 5v 1.000000 1.000000 -1.000000 6v 1.000000 -1.000000 -1.000000 7v 1.000000 1.000000 1.000000 8v 1.000000 -1.000000 1.000000 9v -1.000000 1.000000 -1.000000 10v -1.000000 -1.000000 -1.000000 11v -1.000000 1.000000 1.000000 12v -1.000000 -1.000000 1.000000 13vt 0.625000 0.500000 14vt 0.875000 0.500000 15vt 0.875000 0.750000 16vt 0.625000 0.750000 17vt 0.375000 0.750000 18vt 0.625000 1.000000 19vt 0.375000 1.000000 20vt 0.375000 0.000000 21vt 0.625000 0.000000 22vt 0.625000 0.250000 23vt 0.375000 0.250000 24vt 0.125000 0.500000 25vt 0.375000 0.500000 26vt 0.125000 0.750000 27vn 0.0000 1.0000 0.0000 28vn 0.0000 0.0000 1.0000 29vn -1.0000 0.0000 0.0000 30vn 0.0000 -1.0000 0.0000 31vn 1.0000 0.0000 0.0000 32vn 0.0000 0.0000 -1.0000 33usemtl Material 34s off 35f 1/1/1 5/2/1 7/3/1 3/4/1 36f 4/5/2 3/4/2 7/6/2 8/7/2 37f 8/8/3 7/9/3 5/10/3 6/11/3 38f 6/12/4 2/13/4 4/5/4 8/14/4 39f 2/13/5 1/1/5 3/4/5 4/5/5 40f 6/11/6 5/10/6 1/1/6 2/13/6 41

cpp

1#include <iostream> 2#include <fstream> 3#include <string> 4 5int main() 6{ 7 //ファイル読み込み 8 const char* namefile = "Cube.obj"; 9 std::ifstream ifs(namefile); 10 11 std::string str; 12 13 if (ifs.is_open() == true) 14 { 15 //printf("ファイル名: %s\n\n",namefile); 16 while (std::getline(ifs,str )) 17 { 18 19 if ((strstr(str.c_str(),"v ")) != NULL) 20 { 21 22 const char* data = str.c_str(); 23 int i = 2; 24 while ((data[i] != '\n')) 25 { 26 27 //printf("%c", data[i]); 28 putchar(data[i]); 29 i++; 30 31 32 } 33 34 //i++; 35 printf("\n"); 36 37 } 38 39 printf("\n"); 40 41 } 42 } 43 else 44 { 45 printf("Error ファイル名:%s \n",namefile); 46 } 47 48 return 0; 49} 50

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

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

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

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

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

txty

2024/02/01 11:45 編集

理論的にxファイルと変わらないですが瞬殺でしたか。それでwebfront.objじゃ、translatef でしか動かせないから不満になると....あと前スレの、できればテクスチャを出せた場合の正解を書いていってほしいんですが。後、webfront.obj でも部品をつくれば、動かせると思います。一応。
退会済みユーザー

退会済みユーザー

2020/09/28 00:30

vaoを用意していなかったことと。オフセットの設定でした。またRenderDocを使ってデバックすればよかった問題でした。
txty

2020/09/28 00:42

シェーダ側?の問題でしたか。回答ありがとうございます。で、この後どうするんですか。webfront.objを瞬殺するのか、xでスキニングを解くのか(私がやりたいだけ)、fbxを解くのか(もしかしたら木構造が必要?)、本命はfbxですが。あとシェーダどうやって覚えたんですか。私も導入程度に覚えたいです。
退会済みユーザー

退会済みユーザー

2020/09/28 00:56

いえ、シェーダーとソースコード両方問題でした。シェーダーは自分はゲームプログラミングc++ という本でちょっと知りあとはこの質問サイトで質問したりネットで調べたりしました。
txty

2020/09/28 02:57 編集

じゃあ、私も読んでみるかな。リンクできる^^程度でいいんだけど。 あとxファイルでつくる人はいなそうだから評価はもらえないかもしれない。 本当か知らないけど、fbxファイルをつくるには、xファイルを練習すればいいと書いてあったけど 本当かどうか。
退会済みユーザー

退会済みユーザー

2020/09/28 06:16

修正欄であれですけど。.objファイルを読み取るさいの文字列をfloat型に変換するという処理提示コードのような方法が合っているのでしょうか?
txty

2020/09/28 06:33 編集

だいたい全部fscanfでfloat型やint型の配列に読みこんだとしかいえない。読み取る数は同じだしコメント邪魔なら...に変えるけど。自動化はしてない。(完全にあってるかは知らない。)
退会済みユーザー

退会済みユーザー

2020/09/28 06:30

この手のコードは自動化するものでははないのでしょうか?
txty

2020/09/28 07:11 編集

そうだと思うけど、コードがかぶるのが嫌だったから、自動化するか、次のファイルにとびつくかの選択だった。自動化しなくても、地面を複数だすのは簡単だけど、草をだすのはむずかしいので迷いましたけど(重いと思うよ。)追記キャラクター動かないし。あとはwhileループ苦手。forループのほうが得意なのが災いした。
txty

2024/02/01 11:46 編集

ゲームプログラミングc++ という本を手にもってみました。
guest

回答1

0

ベストアンサー

cpp

1while ((data[i] != '\n'))

コードですが

cpp

1while ((data[i] != '\0'))

でした。改行のあとに終端コードが来るのでした。

投稿2020/09/27 12:48

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問