トップページ⇒tech
1001コメント288KB

C言語質問所 <43>

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C言語質問所

問題をちゃんと切り分けて、Cの話かそうでないか洗ってから質問してください。
というより、聞く前に一応 Web で検索してください。
コンパイラを探してるなら >>2 を見てください。

GUIとか、C標準でできない事の質問は使ってる開発環境のスレに行ってください。
ソース丸投げ、宿題、書籍 は専門の別スレがあるからそこへ行ってください。

上記を守らない書き込みをした場合、その結果は激しく未定義とします。


C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/


前スレ <42>
http://pc3.2ch.net/test/read.cgi/tech/1037101156/
0153デフォルトの名無しさんNGNG
>>152
ヌル文字のチェックを忘れてるの〜
0154デフォルトの名無しさんNGNG
>>150
読みづれー。
0155デフォルトの名無しさんNGNG
\0後の動作が違う。
0156デフォルトの名無しさんNGNG
>>154
おいおい、あれぐらい頑張って読めよ
0157デフォルトの名無しさんNGNG
>>153
忘れてるんじゃない。俺はしない派。
0158デフォルトの名無しさんNGNG
文字列の場合はmemcpyだろうがstrncpyだろうが効果は同じだよね。
あくまでも文字列として扱う場合ね。
0159152NGNG
>>153

そうか……俺的に諸悪の根源のあの動作か。
サンクス。
0160デフォルトの名無しさんNGNG
>>156
頑張らないといけないなんて、やっぱり読みづれー。
0161デフォルトの名無しさんNGNG
>>158
「あくまでも文字列として」の意味がわからんよ。
後ろをゼロで埋めるところが違う。
0162デフォルトの名無しさんNGNG
>>156
翻訳お願いします。
0163デフォルトの名無しさんNGNG
>>161
文字列として扱う場合は\0以降は見ないだろ。
0164163NGNG
というわけでmemcpyは文字列以外の配列のコピーにしか使わない。
0165デフォルトの名無しさんNGNG
正直 >150 の仕様が一番使いやすそうだよなぁ、やっぱ。
0166デフォルトの名無しさんNGNG
>>164
お前だけはな。
0167デフォルトの名無しさんNGNG
何?150のどこが読みづらいの?

>>164
それはどうかと思う
0168163NGNG
見ないってのはプログラマが見ないという意味だよ
0169デフォルトの名無しさんNGNG
あれが読みづらいと言ってるヤツは初心者。
約1名しかいないようだが。
0170デフォルトの名無しさんNGNG
これで我慢しとけ。Win32のlstrcpynと同じ仕様だ。
char *strcpyn(char *str1, const char *str2, size_t count)
{
*str1 = '\0';
return strncat(str1, str2, count);
}
0171デフォルトの名無しさんNGNG
>>170

全然違うし。
0172デフォルトの名無しさんNGNG
char *strcpyn(char *str1, const char *str2, size_t count)
{
if (count) *str1 = '\0';
return strncat(str1, str2, count);
}
0173デフォルトの名無しさんNGNG
char *strcpyn(char *str1, const char *str2, size_t count)
{
if (count <= 0) return str1;
*str1 = '\0';
return strncat(str1, str2, count-1);
0174デフォルトの名無しさんNGNG
これで我慢しとけ。Win32のlstrcpynと同じ仕様で動く時もある。

#define strcpyn(str1,str2,count) \
  (*(str1) = '\0', strncat(str1, str2, count))
0175170NGNG
あ。
strncat() ってバッファが足りない場合は strncpy() と同じく終端 '\0'
付けてくれないのね。
ごめそ。
0176デフォルトの名無しさんNGNG
>>173
> if (count <= 0)
ダサ。
0177デフォルトの名無しさんNGNG
size_tがunsignedであることって保証されてたっけ?
でないと引数がマイナスで来る可能性もあるよね。
0178デフォルトの名無しさんNGNG
「サイズ」がマイナスだと困るな
0179デフォルトの名無しさんNGNG
>>176
だから自分のスタイルと違うのを馬鹿にするなって。
0180デフォルトの名無しさんNGNG
>>177
保証されてるよ。
0181デフォルトの名無しさんNGNG
ここでも時間の逆流が起こってるな>>178>>179
0182177NGNG
>>180
サンクス。
ってなると >>173 で if (count <= 0) ってやってるのはダサいことになるかな。
0183デフォルトの名無しさんNGNG
>>179
全然スタイルの話じゃないだろ。
0184デフォルトの名無しさんNGNG
一回しかクリックしてないのに二重カキコって言われる・・・。
0185デフォルトの名無しさんNGNG
>>181
いま吉良さまが戦っている。

>>184
キングクリムゾンの能力で1度目押したことを認識しなかったのだよ。キミは。
0186デフォルトの名無しさんNGNG
if (!count) か?
0187デフォルトの名無しさんNGNG
>>184
テキストの末尾に、適当に全角スペースとか加えてみろ。
0188デフォルトの名無しさんNGNG
>>182
いや、おまえのように自信のない奴はつけておいた方が確実。
0189デフォルトの名無しさんNGNG
>>178 >>179
プ) 
0190デフォルトの名無しさんNGNG
>>187
いや、それがだね。エラーといわれたのにちゃんと書き込まれているのだよ。
0191デフォルトの名無しさんNGNG
countがunsignedのときコンパイラによっては
if (count <= 0)
と書くと警告出す場合も
0192デフォルトの名無しさんNGNG
>>182
いや、おまえのように自信のない奴はsize_tで定義しない方が確実。
0193デフォルトの名無しさんNGNG
>>182
いや、おまえのように自身のない奴は包茎手術した方が確実
0194デフォルトの名無しさんNGNG
>>193
俺はズル剥けだっつの
0195デフォルトの名無しさんNGNG
>>194
バカ、お前の毛髪の話じゃないっつの
0196デフォルトの名無しさんNGNG
ちょっと目を離したスキにネタスレになってるYO・・・ トゥトゥトゥマシェーリー
0197デフォルトの名無しさんNGNG
「糞スレ本来の姿に」
0198デフォルトの名無しさんNGNG
>>195
はぁ?マジで剥けてるって。包茎がひがむな(ワラ
0199デフォルトの名無しさんNGNG
くやしい・・・
0200デフォルトの名無しさんNGNG
日本の男性の7割は包茎なんだから気にすんな
0201デフォルトの名無しさんNGNG
>>198
いいからさっさとアデランスにダイヤルしる!
見合いくらいならできるようになるかもしれんぞ(ワラ
0202デフォルトの名無しさんNGNG
なぜ包茎の話でアデランスとか言い出してんのか謎。
0203デフォルトの名無しさんNGNG
原因は 194+195
0204デフォルトの名無しさんNGNG
>>202
ここは2chだからそういうバカはよくいる
0205デフォルトの名無しさんNGNG
「お隣さん」で論争が始まったっぽい
0206デフォルトの名無しさんNGNG
202がなぜ包茎の話をすることには疑問を
もたないのか謎。
0207デフォルトの名無しさんNGNG
ってか日本人男性の七割が包茎なんて都市伝説みたいなもんだろ
0208デフォルトの名無しさんNGNG
。 207 がいぢめるYO〜!!!
。   ∧_∧。゚
 ゚  (゚ ´Д`゚ )っ゚
  (つ   /  アァァァァ
    |  (⌒)
   し⌒^
0209デフォルトの名無しさんNGNG
いいじゃん包茎でも。おまえらに迷惑かけたか?
0210デフォルトの名無しさんNGNG
>>209
チンカス臭いから迷惑
0211デフォルトの名無しさんNGNG
しかし、事実上スレが分かれたが、別に悪い事ではないな。
0212デフォルトの名無しさんNGNG
あっちは論争&質問スレ、こっちは包茎&ズル剥けスレ。
0213デフォルトの名無しさんNGNG
一応はっとこう。質問は↓へ。

char *c[43] = {"C言語のことは漏れに聞け!"};
http://pc3.2ch.net/test/read.cgi/tech/1037281411/l50
0214デフォルトの名無しさんNGNG
>>212
お前あっちの>>1だろ。まだいたのかしつこいな。
0215デフォルトの名無しさんNGNG
>>214
違いますが。あなたバカな人ですよね?
0216デフォルトの名無しさんNGNG
>>215
違いますが。あなたがバカな人です。
0217デフォルトの名無しさんNGNG
>>215-216
お前ら誰だ?
0218あっちの1NGNG
オレがあっちの1だよ。マジで。
どうでもいいけどこのスレ邪魔だ。削除依頼だしとけ。
0219デフォルトの名無しさんNGNG
>>218
あんた誰?
0220デフォルトの名無しさんNGNG
>>219
つーかおまえ誰よ?
0221デフォルトの名無しさんNGNG
>>218
だからお前誰だって。勝手に1なのるんじゃねーよ。
0222デフォルトの名無しさんNGNG
>>221
マジだよおまえ!
ほんとだから!
0223デフォルトの名無しさんNGNG
荒れてまつね
0224デフォルトの名無しさんNGNG
>>220
お前はオレだ!!
0225デフォルトの名無しさんNGNG
俺があいつであいつが俺で?!
0226デフォルトの名無しさんNGNG
荒らす奴がいなければこのスレも平和でいられたのに。
0227デフォルトの名無しさんNGNG
>>226
んなわけねーだろ。立った時点で糞スレだ。
0228デフォルトの名無しさんNGNG
別に極フツーのスレだと思うけどなぁ。
0229デフォルトの名無しさんNGNG
ここの>>1は単にスレが立てたかっただけなんだよ。
それが証拠に前スレがだいぶ残ってる時に、>>1がいきなりここを立てやがった。
0230デフォルトの名無しさんNGNG
>>228
>>49-50
0231デフォルトの名無しさんNGNG
それならそれでほっぽいて後から使えばよかっただけじゃ。
0232デフォルトの名無しさんNGNG
そんな>>1の行動を肯定するようなことはできん。そもそもスレタイにセンスがない。
0233デフォルトの名無しさんNGNG
所詮糞が立てたらこんな糞スレになる
0234デフォルトの名無しさんNGNG
ここで 1 を許したら、乱立厨を許す事になるぞ。
0235デフォルトの名無しさんNGNG
>>1
ふざけるな!
0236デフォルトの名無しさんNGNG
\0
0237デフォルトの名無しさんNGNG
簡単な質問で申し訳ないのですが、10進数を16進数に変換するには
どうすればいいのでしょうか?ご教授ください。
0238デフォルトの名無しさんNGNG
switch文
0239デフォルトの名無しさんNGNG
>>237
この関数を使えば変換できます。

int decimal_to_hexadecimal(int n) {
  return n;
}
0240デフォルトの名無しさんNGNG
>>237
電卓プログラムを起動してやってもらうプログラムを作る。
マウスを自動で動かす処理が結構面倒
0241デフォルトの名無しさんNGNG
>>237
char *hex[]={"00","01","02","03", ... , "FE", "FF"};
int dec = 24; /* 適当な10進の数値、ただし範囲は 0-255 */

printf("%s\n", hex[dec]);
0242デフォルトの名無しさんNGNG
>>237
char hex[0xffffffff][9];
int i,dec = 24;
for(i=0;i<=0xffffffff;i++) sprintf(hex[i],"%x",i);
printf("%s\n", hex[dec]);
0243242NGNG
ああ、int iだって
unsigned int iだよ
鬱だ逝ってきます
0244デフォルトの名無しさんNGNG
>>238-243
みなさん新雪でつね!
0245デフォルトの名無しさんNGNG
printf("%x", i);
024616to10NGNG
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <string.h>
main(){
int i,j=0;
char c[20];
float ans=0.0;
gets(c);
for(i=0; i<strlen(c); i++){
if(0<=(c[i]-'0') && (c[i]-'0')<=9)
ans+=(c[i]-'0')*pow(16,j--);
else if(c[i]!='.')
ans+=(c[i]-'a'+10)*pow(16,j--);
}
printf("%f\n",ans);
return 0;
}
0247デフォルトの名無しさんNGNG
麻奈本でCを勉強して、
for文を始めたのですが、本にあったサンプルコードが

#include <stdio.h>
int main()
{
int num,i;
printf("いくつ*を出力しますか?\n");
scanf("%d",&num);
for(i=1;i<=num;i++)
{
printf("*");
}
printf("\n");
return 0;
}

こうなってたのですが、そのなかの
printf("\n");
はどういう意味ですか?なんの意味があるのか分からないので教えてください。
お願いします。
0248デフォルトの名無しさんNGNG
改行じゃねえの?
0249デフォルトの名無しさんNGNG
>>247
\n の意味を調べれ。
0250デフォルトの名無しさんNGNG
しかし入門本って何で printf() から教えたがるんだろう。
まず putchar()、次に puts()、その次に初めて printf() だろうに。
0251デフォルトの名無しさんNGNG
>>250

本当に動いてる〜ってことが分からんとツマランからだろう。
0252デフォルトの名無しさんNGNG
\nは改行って知ってるのですが、
言葉が無いのに\nだけ入れても意味無いなー
と思い書きました。

さっきprintf("\n");抜きでコンパイル、実行したら
意味がわかりました。
すいませんでした。
■ このスレッドは過去ログ倉庫に格納されています