あなたの宿題、お姉さんが答えます
■ このスレッドは過去ログ倉庫に格納されています
0001お姉さん
NGNGただし、お姉さんを5分以上考え込ませる難解なものは受け付けません。
初心者のみお姉さんは歓迎します。
0002名無しさん@お腹いっぱい。
NGNG0003名無しさん@お腹いっぱい。
NGNG今日のプログラミングの課題で「おまんこをプログラミングせよ」
というのがありました。しかし僕は厨房なのでおまんこを見たこと
もありません。おまんこを見せてくれませんか?
また発展問題として「セクースをプログラミングせよ」というのも
出ました。発展問題を解くと成績が上がるのでぜひ協力してもらい
たいのですが。セクースの相手になってくれますか?
0004名無しさん@お腹いっぱい。
NGNGhttp://www.sikosiko.com/
0005名無しさん@お腹いっぱい。
NGNG0006名無しさん@お腹いっぱい。
NGNG0007名無しさん@お腹いっぱい。
NGNG0008名無しさん@お腹いっぱい。
NGNG0009名無しさん@お腹いっぱい。
NGNG0010>7
NGNG0011名無しさん@お腹いっぱい。
NGNG16びっと以下同じ
64ビット
ってどうちがうんですか?
0012名無しさん@お腹いっぱい。
NGNG0013名無しさん@お腹いっぱい。
NGNG0014名無しさん@お腹いっぱい。
NGNG0015名無しさん@お腹いっぱい。
NGNG0016お姉さん
NGNG知りません。ごめんね。
0017名無しさん@お腹いっぱい。
NGNG0018名無しさん@お腹いっぱい。
NGNG0019名無しさん@お腹いっぱい。
NGNG0020名無しさん@お腹いっぱい。
NGNGC言語の関数に"strncpy"ってありますが、
この関数を自分で作れという問題がでました。
教えてください。
0021名無しさん@お腹いっぱい。
NGNGネタだろ?
0022名無しさん@お腹いっぱい。
NGNGchar* strncpy(char* dest , char* src , LONG length)
{
int i;
for(i=0 ; i<length ; i++) dest[i]=src[i];
return dest;
}
char* strncpy(char* dest , char* src , LONG length)
{
memcpy(dest , src , length);
return dest;
}
0023名無しさん@お腹いっぱい。
NGNG{
for(;c!=0 && *s!='\0';c--) *d++=*s++;
}
もっと短くならんかなぁ...
0024名無しさん@お腹いっぱい。
NGNG0025お姉さん
NGNG20のような初心者歓迎です。
0026お姉さん
NGNGネット上にソースのってるでしょ?
自分で探そう。見つからなかったら
また来てね
0027お姉さん
NGNGAIについてはlispを少し知ってるくらいなので
知りません。ごめんね。
0028名無しさん@お腹いっぱい。
NGNG0029名無しさん@お腹いっぱい。
NGNG0030名無しさん@お腹いっぱい。
NGNG0031名無しさん@お腹いっぱい。
NGNG0032Visual 名無しさん
NGNGwhile( (c--) && (*d++=*s++) );
}
0033名無しさん@お腹いっぱい。
NGNG{
char *start = dst;
while (count && (*dst++ = *src++))
count--;
if (count)
while (--count)
*dst++ = '\0';
return(start);
}
003418
NGNG0035お姉さん
NGNGyahoo.comでhanoi.cで検索してください。
>31
LISP知らないなら私の勝ちじゃん。
0036名無しさん@お腹いっぱい。
NGNGもっとも33はVC++のcrtのソースあたりからの抜粋に見えるが。
以下はFreeBSDのSTRCPY(3)からの抜粋
The strncpy() copies not more than len characters into dst, appending
`\0' characters if src is less than len characters long, and not termi-
nating dst if src is more than len characters long.
0037お姉さん
NGNGvoidでいいんじゃない?
003832
NGNG0039名無しさん@お腹いっぱい。
NGNG004020
NGNG本当にネタではないです。
みなさんはプログラムを簡単にされてますが、
strncpyはn個の文字だけ複写します。文字列s2がnより短い場合は、
s1の後ろをn文字までNULLで埋めます。s2の長さがn以上であればNULLで終了する
結果は出ません。s1を返します。
という条件で
char *strncpy(char *,char *,int n);
main()
{ char a[512];
strncpy(a,"itteyosi",4);
printf("%s",a);
}
char *strncpy(char *s1,char *s2,int n)
{ int x;
char *p;
p = s1;
}
肝心な関数の部分が分かりません。
2ちゃんの頭脳よHELP!!!
0041名無しさん@お腹いっぱい。
NGNGキミはぜんぜんやる気ないのかな?
0042名無しさん@お腹いっぱい。
NGNG「voidでいい」もなにも、strncpyは「ANSI/ISO C標準ライブラリ関数」
なんだよ。
>>40
目が悪いのか?
それと、strncpyの仕様を良くみれば分かることだが、通常は
strncpyの後で、文字列をNULターミネートしてやる必要がある。
strncpy(a, "itteyosi", 4);
の後では、a[0]からa[3]には'i', 't', 't', 'e'が入り、a[4]以降は全く
変更されない。この場合はaは自動変数だから、この部分の内容は不定。
従って、これを次の行でprintfに渡した結果も同様に不定だ。
0043名無しさん@お腹いっぱい。
NGNG読み込んだファイルのバイナリデータをメッセージボックスかなにかで表示する
ようはバイナリエディタの表示だけできるようなものが作りたいのですが
アドバイスお願いします。できればサンプルのようなモノがあれば紹介してほしいです。
ファイルを読み込む部分まではできました。表示する部分とユウのが見当もつかない状態です。
0044名無しさん@お腹いっぱい。
NGNGバイナリ⇒16進文字の変換ができないのか?
近頃の初心者はホント謎だな‥
sprintfのヘルプ読め!
0045名無しさん@お腹いっぱい。
NGNGコンソールアプリにするなら44と同意見。
ウィンドウに表示したいならとりあえずMFCかSDKか教えてくれ。
004643
NGNGMFCです。何か部分部分はわかるのだけれどいざ組んでみると
つまずいてしまうのです。
具体例をあげてもらえると嬉しいです。
0047名無しさん@お腹いっぱい。
NGNGウィンドウに表示する事が出来ないのネ・・
質問は状況をわかりやすく!
0048名無しさん@お腹いっぱい。
NGNGhttp://www.zob.ne.jp/~c.mos/soft/bz.html
0049名無しさん@お腹いっぱい。
NGNG1行分の内容をひとつの文字列に作れますか?
3.文字列を、画面(ウィンドウ)に表示できますか?
2.その方法を繰り返しファイル全体に適用できますか?
というふうにステップごとに解決しないと
自分がどこでつまづいてるのかがわからないの
ではないかな?
0050名無しさん@お腹いっぱい。
NGNG値を本来のOSバージョンとは違う値を返すようにしたいんですができますか?
ちなみに、その対象となるプロセスのソースコードはありません。
たとえば
osver 4.0 foobar.exe
みたいにして、foobar.exeで呼ばれる GetVersionExとGetVersionのmajorとminorを
それぞれ、4と0に指定したいってことなんだけど…。
kernel32.dllにはいっちゃってるしやっぱり無理?
0051名無しさん@お腹いっぱい。
NGNG教えてください。
0052名無しさん@お腹いっぱい。
NGNG0053MSDNでdebugで調べてみればーーー
NGNGCStirng TempStr ;
TempStr.Format("変数A:%08X\n変数B:%08X",a,b) ;
AfxMessageBox(TempStr) ;
0054名無しさん@お腹いっぱい。
NGNG0055お姉さん
NGNGこれで出来ると思うけど。。解決しちゃってたらごめんね。#include<stdio.h>
void strncpy(char *,char *,int n);
main()
{ char a[512];
strncpy(a,"itteyosi",4);
printf("%s",a);
}
void strncpy(char *s1,char *s2,int n)
{
int i;
for(i=0;i<n;i++)
s1[i]= s2[i];
s1[i]='\0';
}
0056名無しさん@お腹いっぱい。
NGNGネタだろ?頼むから、ネタだといってくれ。お願いだ〜。
0057名無しさん@お腹いっぱい。
NGNGvoid strncpy(char *s1, const char *s2, const size_t n)
{
size_t count = n;
while (n--)
*s1++ = *s2++;
}
0058名無しさん@お腹いっぱい。
NGNGchar *strncpy(char *s1, const char *s2, const size_t n)
{
char *r = s1;
size_t count = n;
while (count--) {
if (*s2) {
*s1++ = *s2++;
} else {
*s1++ = '\0';
}
}
return r;
}
0059ブチ
NGNG42 で言われてますが、変数 a は512バイトのメモリを確保はしたものの内容が不定です。
文字列としてデータを扱うためには文字列の最後に NULL ('\0')を
置くことでプログラムはそこが最後だと認識します。
内容が空の場合は 先頭が NULL なわけですね。
それを踏まえると a は配列の先頭にまず NULL を置くことが義務になります。
そうしないとNULL が 512 バイトの中になければ
実装されている strncpy であっても確保していないメモリ領域への上書き(メモリ破壊ももありえます。
0060揚げ足だが
NGNG0061名無しさん@お腹いっぱい。
NGNGchar *strncpy(char *s1, const char *s2, size_t n)
{
memcpy(s1, s2, n);
return s1;
}
0062お姉さん
NGNGネタじゃないよ。マジだよ。
0063お姉さん
NGNG0064名無しさん@お腹いっぱい
NGNGitteyosi の部分じゃないの?
プログラムはあってんじゃない?
0065お姉さん
NGNG0066名無しさん@お腹いっぱい。
NGNG0067いちろうくん
NGNGおねいさん、ちがうよ。
n=1で呼ばれたときに、S1に何文字書き込まれるか考えてみ。
0068名無しさん@お腹いっぱい。
NGNGを定義して、ヘッダとして呼び出すのにはどうしたらいいんでしょうか?
つまり、他のファイルからの(オリジナル)関数呼び出し参照方法
はどうすればいいのでしょう?
hoge.c
aaa.h <これ?
でhoge.cの中身のヘッダに
#include<aaa.h>
とかいて、呼び出せばいいという認識でよろしいいのでしょうか?
0069お姉さん
NGNG#include"aaa.h"です。
>>いちろうくん
一文字プラス\0で二文字。だめ?
0070お姉さん
NGNGどの案を採用したの?
007120=40
NGNG2ちゃんでまで説教されるとは思わなかったですが、
41さん42さんに言われた通り、ちょっと教えて君(死語)になってました。
申し訳ない・・・。
55さん,57さん,58さん方のソースは自分でも出来ました。
自分が出したいプログラムは基礎の丁寧なものなので、
皆さんにとってはバカらしいものかもしれませんが、
”文字列s2がnより短い場合は、 s1の後ろをn文字までNULLで埋めます。
s2の長さがn以上であればNULLで終了する 結果は出ません。”
の部分が解決していません。
プログラムは人それぞれなので、一概に正解とかはないと思いますが、
もう少し自分で考えてみます。
大変参考になりました。
時間ある人がいたら、別ソースも見せてください。
0072さらしあげ
NGNG>>55
void strncpy(char *s1,char *s2,int n)
{
int i;
for(i=0;i<n;i++)
s1[i]= s2[i];
/* おいおいせっかくコピーしたものを '\0' で上書きかい */
s1[i]='\0';
}
/* n = 3 のとき、 s1[0]=='\0' , s1[1]=='\0' , s1[2]=='\0' */
0073お姉さん
NGNGn=3のとき
for(i=0;<n;i++)
s1[i]=s2[i];
このループを抜ける時点でs1[0]=i s1[1]=t s1[2]=t
s[i]='\0'
ここでiは一インクリメントされているので4,
s[4]='\0'
結果s1=itt\0
何がいけないのよ。
s[i]='\0'の部分はループに入ってないかんね?
0074お姉さん
NGNGs[3]=\0のまちがいね。
007572>お姉さま
NGNG0077あなたのうしろに名無しさんが・・・
NGNG0078名無しさん@お腹いっぱい。
NGNG33以上の簡潔さには、なかなかなりようがないからしょうがないが。
0080名無しさん@お腹いっぱい。
NGNGあなたのもね。
これじゃ駄目?
#include<stdio.h>
void strncpy(char *s1,char *s2,int n)
{
int i;
for(i=0;i<n,s2[i]!='\0';i++){
s1[i]=s2[i];
}
for(;i<n;i++){
s1[i]='\0';
}
return;
}
int main(void){
int i;
char s1[] = "abcdef";
char s2[] = "xyz";
strncpy(s1,s2,5);
for(i=0;i<7;i++){
printf("%d : %c : %d\n",i,s1[i],s1[i]);
}
return 0;
}
0081名無しさん@お腹いっぱい。
NGNG0082お姉さん
NGNGこれならばnがs2よりも大きかった場合に対応しますね。
あと空白の部分を\0で埋めますね。
これで質問者の意図にはあってるんでしょうか。
0083名無しさん@お腹いっぱい。
NGNGhttp://www.omanko.com/
0084名無しさん@お腹いっぱい。
NGNG「NULLで終了する 結果は出ません」←これ意味不明だが…
char *strncpy ( char *s1, char *s2, size_t n )
{
char *r = s1;
while( n-- && (*s1++ = ((*s2)?(*s2++):('\0'))) );
return r;
}
008536=42
NGNG予想通りだが、33はVC++のstrncpy実装そのものだった。
しいて言えば、手書きのコードならば0埋めにはmemsetを使うのが普通だろう。
>>82
良く見ろ。戻り値がvoidだ。仮引数もANSI C的には正しくないがな。
それにしても、33という正解が既に出ていながらなぜここまで引っ張る?
008684訂正
NGNG{
char *r = s1;
while( n-- ) *s1++ = ((*s2)?(*s2++):('\0')));
return r;
}
0087お姉さん
NGNG何で戻り値がvoidじゃいけないのか教えてください。
多分他に質問が無いからじゃないですか・・・?<なぜ引っ張る
0088名無しさん@お腹いっぱい。
NGNGあんたこそ要求されている仕様を良く見てくれ。
33のプログラムは、string.hのstrncpyとは働きが同じだけど、
いま要求されてる仕様(40や71)は満たしてない。
仕様変更には迅速に対応しませう。
ついでにいえば、宿題の答としては返り値のchar *やら
引数のconstやらsize_tやら使わない方が
いかにも自分で考えて作ったみたいでいいでしょ?(<中途半端に親切)
>>86
括弧多いよ。
008980
NGNG009080
NGNG80=88=89=90です。
欝だ氏能。
0091名無しさん@お腹いっぱい。
NGNGimport java.awt.event.*;
import java.applet.Applet;
class CardPanel extends Panel {
ActionListener listener;
Panel create(LayoutManager layout) {
Button b = null;
Panel p = new Panel();
p.setLayout(layout);
b = new Button("one");
b.addActionListener(listener);
p.add("North", b);
b = new Button("two");
b.addActionListener(listener);
p.add("West", b);
b = new Button("three");
b.addActionListener(listener);
p.add("South", b);
b = new Button("four");
b.addActionListener(listener);
p.add("East", b);
b = new Button("five");
b.addActionListener(listener);
p.add("Center", b);
b = new Button("six");
b.addActionListener(listener);
p.add("Center", b);
return p;
}
CardPanel(ActionListener actionListener) {
listener = actionListener;
setLayout(new CardLayout());
add("one", create(new FlowLayout()));
add("two", create(new BorderLayout()));
add("three", create(new GridLayout(2, 2)));
add("four", create(new BorderLayout(10, 10)));
add("five", create(new FlowLayout(FlowLayout.LEFT, 10, 10)));
add("six", create(new GridLayout(2, 2, 10, 10)));
}
public Dimension getPreferredSize() {
return new Dimension(200, 100);
}
}
public class CardTest extends Applet
implements ActionListener,
ItemListener {
CardPanel cards;
public CardTest() {
setLayout(new BorderLayout());
add("Center", cards = new CardPanel(this));
Panel p = new Panel();
p.setLayout(new FlowLayout());
add("South", p);
Button b = new Button("first");
b.addActionListener(this);
p.add(b);
b = new Button("next");
b.addActionListener(this);
p.add(b);
b = new Button("previous");
b.addActionListener(this);
p.add(b);
b = new Button("last");
b.addActionListener(this);
p.add(b);
Choice c = new Choice();
c.addItem("one");
c.addItem("two");
c.addItem("three");
c.addItem("four");
c.addItem("five");
c.addItem("six");
c.addItemListener(this);
p.add(c);
}
public void itemStateChanged(ItemEvent e) {
((CardLayout)cards.getLayout()).show(cards,
(String)(e.getItem()));
}
public void actionPerformed(ActionEvent e) {
String arg = e.getActionCommand();
if ("first".equals(arg)) {
((CardLayout)cards.getLayout()).first(cards);
} else if ("next".equals(arg)) {
((CardLayout)cards.getLayout()).next(cards);
} else if ("previous".equals(arg)) {
((CardLayout)cards.getLayout()).previous(cards);
} else if ("last".equals(arg)) {
((CardLayout)cards.getLayout()).last(cards);
} else {
((CardLayout)cards.getLayout()).show(cards,(String)arg);
}
}
public static void main(String args[]) {
Frame f = new Frame("CardTest");
CardTest cardTest = new CardTest();
cardTest.init();
cardTest.start();
f.add("Center", cardTest);
f.setSize(300, 300);
f.show();
}
public String getAppletInfo() {
return "Demonstrates the different types of layout managers.";
}
}
009285
NGNGで?
> strncpyはn個の文字だけ複写します。文字列s2がnより短い場合は、
> s1の後ろをn文字までNULLで埋めます。s2の長さがn以上であればNULLで終了する
> 結果は出ません。s1を返します。
「NULLで終了する結果は出ません」が意味不明だが、これは善意に解釈して
「NULターミネートされません」という意味だろう。
だとすればこれはANSI/ISO標準のstrncpyの仕様そのものだ。
最後の「s1を返します」をあんたはちゃんと見たのか?
0093名無しさん@お腹いっぱい。
NGNG仕様の理解のために、自分で実装してみるのは、学習過程で有効なことだが、
未熟なくせに偉そうにしてる、脳味噌空っぽ君が一人二人まざってるよ。
こういう害虫が、世の中悪くするんだよねえ。
009420=40
NGNG>「NULLで終了する結果は出ません」
というのは、文字列の最後にNULLを入れないとゆう意味です。
0095お姉さん
NGNG0096あなたのうしろに名無しさんが・・・
NGNG尾根遺産はおいくつですか。
彼氏いますか。
0097名無しさん@お腹いっぱい。
NGNGSQLを使ってある表中の行をコピーしたいのですが
INSERT INTO 表 VALUES((SELECT * FROM 表 WHERE 列=値));
でできますか?
そもそも行のコピーってSQLでできるんでしょうか?
0098お姉さん
NGNGなんでいきなりSQL。。(^_^;)
この形式だとSELECT以下の条件を満たす値を含む行を複数行
他の表からコピーできると思います。
行のコピーはSQLのオペレーションの中でも最重要だと思いますが。
0099お姉さん
NGNG0100お姉さん
NGNGjoinを使って二つ以上の表から値を持ってくることも出来ます。
今日はここまで。
0101おやじ
NGNGSQLでVALUES() 内に副問い合わせってかけたっけ?
コピーするときってVALUESつかったっけ?
あれれ?
忘れた
■ このスレッドは過去ログ倉庫に格納されています