文字連結#C言語
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
NGNGchar 型に変えて、続けて格納していきたいんですがどうすればよいんでしょう?
int a;
char f;
1回目 a=2
fの中身は2
2回目 a=4
fの中身は24
3回目 a=7
fの中身は247
4回目 a=3
fの中身は2473
・・・
とこのようにしたいんです。
strcat関数などを使おうとしましたが。int型は怒られます。
それで、int型をいったんchar型の宣言bに b=aと使用とすると
やはりエラーが生じます。
int型のchar変換を、初歩的な質問かもしれませんが教えてください。
0002Visual 名無しさん
NGNGint a;
char f[100]={0};
//1回目
a=2;
sprintf( f@`"%s%d"@`f@`a );
//2回目
a=4;
sprintf( f@`"%s%d"@`f@`a );
//3回目
a=7;
sprintf( f@`"%s%d"@`f@`a );
//4回目
a=3;
sprintf( f@`"%s%d"@`f@`a );
00032
NGNG0004名無しさん@お腹いっぱい。
NGNGガード等はしてないよ
int a@`j@`offs ;
char f[100] = { 0 } ; // 100は適当
offs = 0 ;
for(j=0; ??? ; j++) {
scanf("%d"@`&a) ;
sprintf(&f[offs]@`"%d"@`a) ;
offs = strlen(f) ;
}
>>1
たぶん、単に配列概念がわかってないだけでわ?
0005名無しさん@お腹いっぱい。
NGNGありがとうございます!!。
目からウロコです。
sprintfという便利なものがあったんですね。
感謝、
#include<stdio.h>
main(){
int a@`j@`offs;
char f[100]={0};
offs=0;
for(j=0; j<=10; j++){
scanf("%d"@`&a);
sprintf(&f[offs]@`"%d"@`a);
offs=strlen(f);
}
printf("%s"@`f);
}
00064
NGNG勉強の為なら、sprintf()の部分くらい自分で作ってみると
さらに理解度が深まるような気がする。
0007名無しさん@お腹いっぱい。
NGNGなんか最初の質問の内容と趣旨が全然違うんだが‥?
いったい何が死体わけ?
0008名無しさん@お腹いっぱい。
NGNGよくわかってない人が質問するとこうなります。
00094
NGNGで、こっちである程度予測して回答しても別にいいじゃん。
0010名無しさん@お腹いっぱい。
NGNG「なにがしたいわけ?」って。
1の趣旨は、数値を文字列に変換して連結したいってことでしょ?
0011名無しさん@お腹いっぱい。
NGNG高度な技術やなぁ‥なっとく‥
0012名無しさん@お腹いっぱい。
NGNGこういうスレで、「質問ができてない」って所からはじめると、
質問した人間はたいてい逃げます。
0013名無しさん@お腹いっぱい。
NGNG0014名無しさん@お腹いっぱい。
NGNG先生、模範回答お願いします。
001513
NGNG#include<stdio.h>
#define MAX 100
void main(void)
{
int a=0@`i;
char f[MAX]@` *p;
p = f;
i = 0;
while( i++ < MAX ){
printf("a = ? (999 で終了) : ");
scanf("%d"@`&a);
if( a == 999 ) break;
*p++ = '0'+a;
}
*p = '\0';
printf("Result : %s"@`f);
}
0016名無しさん@お腹いっぱい。
NGNG隔離板に相応しい、御迷答ですな。
0017名無しさん@お腹いっぱい。
NGNG先生、模範回答お願いします。
001816(ニセ13)
NGNG#include<stdio.h>
#include<string.h>
void main(void)
{
int a@` i@` j@` count=1@` flag=0;
char f[256]@` temp[10]@` w;
while( 1 ){
printf("%d回目 a = "@`count++);
scanf("%d"@`&a);
if( a < 0 ){
flag = -1;
a = -a;
}
i = 0;
do{
temp[i++] = a%10 + '0' ;
a /= 10;
}while( a > 0 );
if( flag == -1 )
temp[i++] = '-' ;
temp[i] = '\0' ;
i--;
j = 0;
while( i>j ){
w = temp[i];
temp[i] = temp[j];
temp[j] = w;
i--;
j++;
}
strcat( f@` temp );
printf("fの中身は : %s\n"@`f);
flag = 0;
}
}
>>16
先ほどのソースに不備がありましたでしょうか?
0019ニセ13
NGNGブレイク方法は使用者まかせだけど、1さんがやりたかったのは
こういうのじゃないのかなぁ。
0020名無しさん@お腹いっぱい。
NGNG00214
NGNGなるほど。まぁそうなんでしょう。
これを実行すると、1さんの書いたとーりにゃなりますな。
ところで、わざわざsprintfを解体したんだから、
strcatも解体すればかっちょええのでわ?
#つーか、最後にtempバッファで入れ替えする必要ないよぉな・・・
話しは変わりますが、
intって16ビットなんですか?
今時、ILP32 で考えるのが普通かと思ってました。
それはやめとけ?ですかね?
002213
NGNG即席で作ったから、正しいという保証はできないが。
char *strcat_i2a(char *des@` int x)
{
char work[24]@` *p; /* \log_10 2^{64} = 19.2... */
int negative;
negative = x < 0 ? x= -x : 0;
for(p = work+sizeof(work)@` *--p = '\0'; x!=0;x/=10) *--p = '0'+x%10;
if(negative) *--p = '-';
return strcat(des@` p);
}
0023名無しさん@お腹いっぱい。
NGNG0024ニセ13>4
NGNG単純だからまぁいいか、と思ったんですが。
char *strcat( char *s1@` char *s2 )
{
char *p = s1;
while( *p ) p++;
while( *p++ = *s2++ );
return s1;
}
>#つーか、最後にtempバッファで入れ替えする必要ないよぉな・・・
iとj使って、配列tempの前後を入れ替えてる作業のことですよね?
aに「-123」と入力すると、tempには「321-」と格納してますから、
最後に入れ替えたんですが。
>intって16ビットなんですか?
2バイトのシステムもありますし、4バイトのシステムもありますね。
これ以外のサイズのintは見たことないんですが、あるのかな?
0025ニセ13
NGNG失礼。「intが2バイトっていうのは古い」という意味でおっしゃってたんですね。
”ILP32”って単語の意味がわからなかったんで、
検索してみたらintは4バイトってなってますね。
自分のパソコンでのことしか事しか考えていませんでした。
もっと視野を広げないとダメですね。
>23
上級者さんには退屈だとおもうんですが、
私のような初心者には調度いい問題ですよ(^^
00264
NGNGあ、言葉足らずでごめんなさい。
tempバッファでひっくり返さなくても
直接fに書きこめばいいかな。と思ったのです。
ちなみにNECのACOS6とかだと、int36ビットというのもありました。
8進数はつらかった。
>>23
暇つぶしにゃ、いいかと思うんですが。
べつに再度やってはならない理由はないかと。
002723
NGNG適切とは言えないと思うのだよ。車輪の再発明は、決して褒められたこと
ではないからな。
ただでさえ初心者は車輪の再発明をしがちなのだから、適切なライブラリ関数
の存在と使用方法を教えるのが正しいやり方じゃないか?
0028名無しさん@お腹いっぱい。
NGNG車輪の再発明もわるくはないかと。
大学の学生実験なんか、みんな車輪の再発明じゃん。
手を動かすと、理解が進むからね。
仕事でこれをやられたらたまらんけどね。
でも、頭悪すぎ。>ニセ13 & 1
0029名無しさん@お腹いっぱい。
NGNGいわんとすることはわかるが、車輪の再発明ってのは
ライブラリ関数の存在を知らずに八角形の車輪を作ったりする
ことだろ。
00304
NGNG車輪の再発明 = 八角形の車輪を作ったりする
ってわけではないでしょう?
大抵そうなる。っつーだけで。
八角形だろうか、三角形になろうが、重要なのは
それを丸くする努力であって、
最初から工場のラインに頼むのはどうかな。と思うけど。
また、firmな世界から言うと、標準ライブラリに溺れた学生は
使えないです。
確かに、的確なライブラリの存在や習得も重要ですけどね。
#まー私的には、なんでもいいけど、2chなんて暇つぶしなんだから
#どーだっていいじゃん。と思うが。
003129
NGNG「車輪の再発明 = 八角形の車輪を作ったりする」ってこと。
出来合いのそこそこ丸い汎用的な車輪があるのに、
それを知らずに再発明するのはヴァカのすることだ。
たまに張り切ったヴァカが24角形くらいに削り磨くことは
あるが、それはどうしようもなく無駄な努力。
追試と再発明は別物なんだけど、そこんとこわかってる?
で、追試も再発明さえもしたことない学生がスカだっただけでしょ。
00324
NGNG俺、初めて知った。
というか、プログラムって無駄な努力の上に成り立っているもの。
という認識でいままでいたが。
そこまで頑なに排除しなくてもいいよーに思うな。
0033名無しさん@お腹いっぱい。
NGNGそうでなければ、ばかじゃねーの?
strncpyを自分で「使う」ために作ってる訳ね―じゃん。
勉強と理解のためにやってるんだろうに。
それを否定する人間は、「画面にHello World.と表示するプログラム」や
「ウィンドウを表示するだけのプログラム」なんて作った事無いんだろうな。
すげえすげえ。
003433
NGNG「既に訳されているので私が行う必要はありません」
数学の証明問題も
「既に証明されているので私が行う必要はありません」
と答えていたんだろうな。
よく高校を卒業できたもんだ。
003523
NGNG↓のことなら、俺じゃないぞ。
まあ、どうでもいいことだがな。
http://piza.2ch.net/test/read.cgi?bbs=tech&key=972032579&st=93&to=93&nofirst=true
003633
NGNGが、このスレに書いてる奴も「(1を課題とみなして)自分ならこう考える」と
いう考えた結果を書きこんでるんだと思うぞ。
だとすれば、周りで見ている奴(含俺)には無意味でも、
当人にとっては充分に意味があるはず。
003723
NGNGに書き込んだ奴ほどは「過激派」ではないつもりだ。
ていうか、「お姉さん」スレッドの奴は、文体から言って明らかに厨房なんだから
あまり気にするな。
まあ、正直確かに口を挟む程のことでは無かったという気はするよ。多分
> 当人にとっては充分に意味がある
遊びが、当初の1の質問をちょっとないがしろにした形で進んでいるような
気がしてちょいと気になっただけだ。
sprintfを初めて知った初心者に教えることか?とね。
0038名無しさん@お腹いっぱい。
NGNGスレなんか立てないで入門書で自習するのがよろし。>初心者
0039ななし
NGNG両名ともいったい何をなれあってるの?もっと熱くなれ〜。
>23 (>>37)
"sprintfを初めて知った初心者に教えることか?とね。 "
質問のしかたも悪ければ、本人の努力も足りないわけだし、
わざわざ親切に1の望む答えを出してやる必要もないと思うけどね。
>33 (>>36)
"周りで見ている奴(含俺)には無意味でも当人にとっては充分に意味があるはず。"
家でオナニーするのは十分本人には意味があるが、
他人がみても気持ちのいいものだとは思えないがどうだい?
車輪の再発明するのは、学習過程においては有意義だと思うが、
ダメコードをだらだらと掲示板に流すのは止めて欲しいな。
醜い上に、情報量が少ない。コピペ荒らしと大した違いないと思うが。いかがかな?
004023
NGNGすまんな、飽きっぽいんだよ。
それと、あんたの書き込みも俺のこの書き込みも、技術的な話題を
求めてくる人間にとっては十分に
> 醜い上に、情報量が少ない。コピペ荒らしと大した違いないと思うが。い
> かがかな?
ってことになるぜ。
あまり無理するな。
0041名無しさん@お腹いっぱい。
NGNG技術系の掲示板やMLでも運営関連の話題は普通に行われてるよ。
004239
NGNG>>23 で君が発言するまでは放置してたのにね。
ほっときゃいいのにねえ。君ってからかうと本当に面白そうだよ。
頭も腕もそんなに悪くはなさそうだけどね。
あんまり無理するなオマエモナ>23
俺って本当に性格悪いと思うよ。
0043名無しさん@お腹いっぱい。
NGNG■ このスレッドは過去ログ倉庫に格納されています