検索結果 28 件

by ぷぷぷジューシー
2年前
フォーラム: C言語何でも質問掲示板
トピック: インラインアセンブラ - 引数合っているはず
返信数: 7
閲覧数: 5860

Re: インラインアセンブラ - 引数合っているはず

ないっぽいので素直に標準ライブラリ使用します
by ぷぷぷジューシー
2年前
フォーラム: C言語何でも質問掲示板
トピック: インラインアセンブラ - 引数合っているはず
返信数: 7
閲覧数: 5860

Re: インラインアセンブラ - 引数合っているはず

>> Bull
んーなるほど、、、
64bit_windowsではint 21hは直接だと動ない。
んじゃ64bit_windowsの命令探してくる
by ぷぷぷジューシー
2年前
フォーラム: C言語何でも質問掲示板
トピック: インラインアセンブラ - 引数合っているはず
返信数: 7
閲覧数: 5860

Re: インラインアセンブラ - 引数合っているはず

コード:

dx にfile_name突っ込みたい

Nびttレジスタ違う同士で変換しtらり戻したりしたい

上記のコードをint 21h tって書かれるでー

file radに回してfile_sizeでバイト数記憶されているなんかあったら出るようにしているはず
by ぷぷぷジューシー
2年前
フォーラム: C言語何でも質問掲示板
トピック: インラインアセンブラ - 引数合っているはず
返信数: 7
閲覧数: 5860

インラインアセンブラ - 引数合っているはず

インラインアセンブラでバイナリファイルを開こうとしたが、引数が合わないのか落ちます > 環境 gccgcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0 windows nasm version 2.15.05 compiled on Aug 28 2020 main.c #include <stdio.h> void binary(int*, char*, int*); void main(void){ int a, b; binary(&a, "boot.img",&b); printf("%d %d\n", a...
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: C言語でOS開発するにはどうすればいいのか
返信数: 2
閲覧数: 3270

C言語でOS開発するにはどうすればいいのか

OS開発するには
ブートローダ -> カーネル -> OS という感じになるのですが何から始めたらいいのかわかりません
そもそもOSの設計自体がわかりません。
なぜ、どの様なことすればわかりません
あまりにも初心者過ぎてなんかすいません
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: [雑談](コードレビュー)(url解析機 0.1 (試作) )
返信数: 0
閲覧数: 5960

[雑談](コードレビュー)(url解析機 0.1 (試作) )

URLのパス名を返すプログラムです URLエンコード関数のurlencode_one_textは日本語にしか対応していない模様 コードを汚いですが見てくれるだけでもうれしいです 設計 1. 日本語文字列をuchar.hのmbrtoc32を使用してwhileループしながらchar32_t型の配列にしまう 2.1 "/'をカウントする, そして"."があれば一にする(カウントしない) [lise=2.2] 2.2 もし条件に達成したらuchar.hのc32rtomb使用してchar型の配列に戻す [lise=2.3] 2.3 2.2で戻した配列が英数字以外はコード内にあるurlencode_one...
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 10648

Re: マルチバイトの変換後出力がNULL

みけCAT さんが書きました:
3年前
前回出力したバイト数がsに格納されているので、
bufが指す位置をその分進めて、前回書き込んだ内容の次から書き込むようにしていますね。
なんとなく分かった
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 10648

Re: マルチバイトの変換後出力がNULL

Bull さんが書きました:
3年前

コード:

#include <stdio.h>
		s = sprintf(buf += s, "%d+", i);
上のコードがどうなっているの?
Buf += sという部分がわからない
どのようになってどのような動きするの?googleで C言語 配列 略称など調べましたが出てこない...
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 10648

Re: マルチバイトの変換後出力がNULL

初めてしったけどsprintfは継続して扱うのでははく一回、一回値を扱う関数なのかな?

コード:

#include <stdio.h>

int main(void)
{
    char str[20];

    sprintf( str, "%s\n", "hello" );
    printf("%d\n", *(int*)str);
    sprintf( str, "%s\n", "Clang" );
    printf("%d\n", *(int*)str);

    return 0;
}
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 10648

Re: マルチバイトの変換後出力がNULL

みけCAT さんが書きました:
3年前
有効なデータの範囲内に終端のナル文字('\0')が無いため、
続けて無効な(範囲外で何があるかわからない)領域を読み、ナル文字の前まで出力してしまうからです。
ほうほう
みけCAT さんが書きました:
3年前
printfは少なくともC89にはあります。
The C89 Draft
初めて知りました
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 10648

Re: マルチバイトの変換後出力がNULL

ゴミが出力されることがあります。 [*]printf("%s\n", a);は、文字列へのポインタ(char*)を要求する%sに対してchar型のデータ(可変長引数の部分なのでintに変換される)を渡しているため、未定義動作になります。 よくある挙動としては、渡された整数を無理やりポインタとして解釈したものは無効な場所を指しているので、値を読み取ることができず、アクセス違反(Segmentation Fault)になることがあります。 [/list] どうしてごみが出るのかね? printfはもともとの仕様? あとこのコードって *ae = *tempae; 普通に値を入れているっと思うだけ...
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 10648

Re: マルチバイトの変換後出力がNULL

sprintf(rhost, "%s", temphost); の部分が配列ではないかったのかっと思うci 問題の部分を取り出し写したコード #include <stdio.h> #include <string.h> void ae(char* ae){ char tempae[432] = {'\0'}; sprintf(tempae, "%s", "afe)"); printf("%s\n", tempae); *ae = *tempae; printf("%s\n", ae); return; } int main(void) { char a; ae(&a); printf("%s\...
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 10648

Re: マルチバイトの変換後出力がNULL

コード:

  rhost = '\0', rpath = '\0';
のコードを消したましたが結果が変わりません
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がNULL
返信数: 16
閲覧数: 10648

マルチバイトの変換後出力がNULL

int geturlparserfunc(const char* name, char* rhost, char* rpath) { int bmfunc_rlen = 0; int inputlen = strlen(name)+1; char32_t inp32b[50]; int arraycount1 = 0, arraycount2 = 0; mbstate_t mbstate = 0; char temphost[MB_LEN_MAX+1]; char temppath[MB_LEN_MAX+1]; int while_n = 0; int slashconunt = 0, co...
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がaが追加される
返信数: 4
閲覧数: 4846

Re: マルチバイトの変換後出力がaが追加される

大量に未定義動作をしていますね。 コンパラ君... '\0'君も確認できたし大丈夫だろう #define __STDC_WANT_LIB_EXT1__ 1 #include <stdio.h> #include <string.h> #include <uchar.h> #include <limits.h> #include <stdlib.h> int geturlparserfunc(const char*, char*, char*); int main(void) { char hostname, pathname; geturlparserfunc("https://youtub...
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がaが追加される
返信数: 4
閲覧数: 4846

Re: マルチバイトの変換後出力がaが追加される

c32rtomb | Programming Place Plus C言語編 標準ライブラリのリファレンス 注意 あくまで文字の変換なので、末尾に終端文字(U'\0') は付加されない。 まさかそんなことだったとは地味に悔しいですq 一応、動いてくれましたc言語に詳しくないのでバグがまだありそうですが asを初期化しないでwindowsのコマンドプロンプトから実行するとなぜか上手いこといかないのでasを初期化しました。windowsのPowerShellでは上手いこといくのに #include <stdio.h> #include <uchar.h> #include <stdlib.h> ...
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力がaが追加される
返信数: 4
閲覧数: 4846

マルチバイトの変換後出力がaが追加される

何故aが追加されるか分かりません #include <stdio.h> #include <uchar.h> #include <stdlib.h> #include <string.h> int main(void) { char32_t in[] = U"http://google.com"; // or "z\u00df\u6c34\U0001F34C" mbstate_t mbstate = {0}; char rpath[MB_LEN_MAX+5]; char* as; if (in[0] =='/'){ printf("\n/を発見した\n"); } size_t bmfunc_r...
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: (コードレビュー)(url解析機)[雑談]
返信数: 7
閲覧数: 5981

Re: (コードレビュー)(url解析機)[雑談]

バグ探しで設計の3と4の間に<code>printf("temppath:\t %s\n", rhost); printf("temphost:\t %s\n", rpath); </code>を入れたですがp6やpr/などが表示されていてこれを何を意味するのか分かりません。 <code> #define __STDC_WANT_LIB_EXT1__ 1 #include <stdio.h> #include <string.h> #include <uchar.h> #include <limits.h> #include <stdlib.h> int geturlparserfunc(co...
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: (コードレビュー)(url解析機)[雑談]
返信数: 7
閲覧数: 5981

Re: (コードレビュー)(url解析機)[雑談]

いくつか改善したけど何故か出力しませんでした何が原因でしょうか? #include <stdio.h> #include <string.h> #include <uchar.h> #include <limits.h> #include <stdlib.h> int geturlparserfunc(const char*, char*, char*); int main(void) { char hostname, pathname; geturlparserfunc("https://golang.org/", &hostname, &pathname); printf("ホスト名; ...
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: (コードレビュー)(url解析機)[雑談]
返信数: 7
閲覧数: 5981

(コードレビュー)(url解析機)[雑談]

ホスト名とパス名をただ返すだけのプログラム 手抜きです バグなど少しでもパフォーマンス改善できる所を教えてくれると嬉しいです 出来ればurl解析機バージョン0.1作りたいと思う 設計 1. 日本語文字列を配列にしまう 2. 配列にした文字列をfor分でワイド文字に変換する 3:1. "/'をカウントする 2. '/"二個になったらrhostを+=で増えるようにする 2:0. '/"が三個になったらcontinueで処理をスキップする 3. '/"が三個以上になったらrpathを+=で増えるようにする 4. 最後にリフレッシュする 参考にしたサイト https://dixq.net/forum/...
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力が一文字だけになってしまう
返信数: 3
閲覧数: 3906

Re: マルチバイトの変換後出力が一文字だけになってしまう

Meta3 さんが書きました:
3年前
char output[MB_LEN_MAX + 1];
のMB_LEN_MAX がマルチバイト1文字を表すのに必要なバイト数(の最大値 =5)だからではないですか
Meta3 さん回答ありがとうございます。

<code>てことはchar output[MB_LEN_MAX * 5];</code>いいのかな?
みけCAT さんが書きました:
3年前
これらは「文字」を変換する関数であるため、1文字しか変換しません。
文字列全体を変換するには、最後まで1文字すつ変換するのがいいでしょう。
みけCA さん 回答ありがとうございます。
わざと配列にし、for などでなんやかんや実装した方がいいのか
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: マルチバイトの変換後出力が一文字だけになってしまう
返信数: 3
閲覧数: 3906

マルチバイトの変換後出力が一文字だけになってしまう

url解析機を作っていてワイド文字に変換した方がアジア系の言語が扱えると聞いたのでマルチバイトを一時的にワイド文字に変換して操作した結果をマルチバイトに変換するという機能です しかしuchar.hライブラリーを試しに使って引っ掛かりましたそれはprintfで出力してもwしか出力しません。 "wwゴリラハローC言語を丸々を出力するにはどうすればいいのでしょうか 環境は os :windows 10, cコンパイラー: MinGW-W64(8.1.0), ライブラリ: uchar.h, stdio.h, limits.h, stdlib.h 現在参考にしているリンク先 https://www.ib...
by ぷぷぷジューシー
3年前
フォーラム: C言語何でも質問掲示板
トピック: Dxライブラリ 1秒ごとに音
返信数: 3
閲覧数: 3732

Re: Dxライブラリ 1秒ごとに音

*c言語には自信ありません。
Dxライブラリーではないのですが、
私のやり方では1秒ごとに音の機能をunistdライブラリーのsleep関数で使ってスリープしながら行います。

サンプルコード
#include <unistd.h>

int main(void)
{
sleep(3);
}

下の記事を参考になると思います。
https://linuxjm.osdn.jp/html/LDP_man-pa ... eep.3.html

詳細検索ページへ移動する