[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 06/24 02:11 / Filesize : 245 KB / Number-of Response : 928
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門編)Part 63



1 名前:デフォルトの名無しさん [2010/04/10(土) 23:30:23 BE:454421186-S★(520172)]
C言語の*入門者*向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 62
pc12.2ch.net/test/read.cgi/tech/1269517734/
★過去スレ
makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★初心者、初級者の方は他の質問スレのほうが良いかもしれません。
例えば
【初心者歓迎】C/C++室 Ver.72【環境依存OK】
pc12.2ch.net/test/read.cgi/tech/1267775473/
とか
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 135代目
pc12.2ch.net/test/read.cgi/tech/1269438098/
★C++言語についてはなるべく聞かないでください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

894 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 08:31:06 ]
文字コード云々じゃなくてさ、問題の意味がわからないって質問だろ?
アルファベットにアルファベットを足すとか言ってるし、「整数 n」←このnをアルファベットだと思ってるんじゃないの?
入力されたアルファベットにnというアルファベットを足すってどういう意味って聞いてるんじゃないの?

895 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 08:58:14 ]
初心者質問していい?

896 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 09:02:10 ]
だめ

897 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 09:51:53 ]
>>895
どうぞ。

>>894
>「整数 n」←このnをアルファベットだと思ってるんじゃないの?
その発想はなかったw

898 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 12:11:13 ]
どうも元質問者は VBからの移行なのか variant型 が当然のようで

 変数 a に 文字の '1' を与える
 → 整数演算の時 値として 1 に評価される

という思考から抜け出せないでいるようだ

899 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 13:46:27 ]
PHPとかその辺混乱しまくりw

900 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 15:29:52 ]
いつの話してんだ

901 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 18:57:08 ]
VC++2008を使っています.
画像を入れる配列を3つに増やそうとすると
'System.StackOverflowException' のハンドルされていない例外が ○○.exe で発生しました。
とエラーがでてしまいます.少し調べたところ,unsigned charしすぎて回帰の回数が増えたためなのかと思ったんですが,どうしても配列を3つ以上使いたいのですがあきらめるしかないのでしょうか?
以下エラーの原因と思われるソースの一部です.(main.cpp)
FILE *fp;
unsigned char header[54];
unsigned char screen[400][300][3];//読み込み用
unsigned char screenB[400][300][3];//保存用
unsigned char screenG[400][300][3];//保存用  //ここをコメントアウトしたらエラー消える
//unsigned char screenR[400][300][3];//保存用

/* 画像サイズ */
int yl=400;//y_long //呼び出し履歴によるとここでデバッグが止まる
int xl=300;//x_long

/* ファイルから読む */
fp=fopen("test.bmp","rb"); /* Windowsビットマップ形式 400*300ピクセル,24ビットカラー */
fread(header,1,54,fp); /* ヘッダ(54バイト)を飛ばす */
fread(screen,1,yl*xl*3,fp); /* 残りはデータ(最下行から順に入る) */
//fread(screenB,1,yl*xl*3,fp);
fclose(fp);


902 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 19:01:11 ]
スタックがあふれるならヒープに取ればいいじゃない、ということで、
mallocとか使って動的にメモリを確保するんです。
多分その段階だとポインタになれてないだろうから、がんばれ、とエールを。



903 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 19:05:58 ]
取り敢えず、スタックの割り当てを増やすのも手かと。

904 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 19:09:29 ]
適当にテストするならグローバルにすればよころう。

905 名前:901 mailto:sage [2010/05/12(水) 19:13:58 ]
>>902
ありがとうございます.
もう一度調べなおしてみます.

906 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 20:06:33 ]
>>901
>editbin /stack:1000000
とかやっとけば OK

907 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 20:38:04 ]
>>906
なんでそんなひどいこというの?

908 名前:デフォルトの名無しさん [2010/05/12(水) 21:43:28 ]
>>894
質問したものですが
さすがにそれはないです。このスレでも意見分かれてませんか?
nをたくさんたすとzまでいってまたaに戻るとか。
アルファベトに数値をたすって意味が分からないんですよ。
たとえばAに1000足したら?
Aとはそもそも何か、16進数の10番目のやつか、何ちゃら
規格とかのコードなのか。それが分かりません

909 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 21:50:49 ]
てst

910 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 21:55:19 ]
>>908
> アルファベトに数値をたすって意味が分からないんですよ。
'A' は0x41や65の別表現でしかない。('A'==0x41==65)
全て内部的にはただの数値。
'A'+1==0x42==66=='B'


911 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 21:55:20 ]
アルファベットに数字を足す問題ですが、
クラスの友達に聞いて解決しました。
ここの人たちは理解力がなさすぎだと思います

912 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 21:56:26 ]
>>908
'a'+1='b'
これならわかる?



913 名前:デフォルトの名無しさん [2010/05/12(水) 21:57:59 ]
>>908
ja.wikipedia.org/wiki/ASCII

ここを読めば文字「A」が65に対応してることがわかるとおもうよ。

914 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 22:01:28 ]
まぁ、普通はアルファベットに数値を足すと聞いたらアルファベットを並べて何文字か後のことだ。なんて思わない罠。

915 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 22:58:04 ]
C言語初心者です。入力した整数の数だけ*を表示したいんですが、
エラー続きです。どこをどう直せばいいか教えて下さい。

#include <stdio.h>
int f(int);

int main(void)
{
int no;
printf("整数を入力:");
scanf("%d",&no);
return 0;
}

void(int n)
{
while (n-->0)
putchar('*');
putchar('\n');
}


916 名前:デフォルトの名無しさん [2010/05/12(水) 23:01:23 ]
#include <stdio.h>
int f(int);

int main(void)
{
int no;
printf("整数を入力:");
scanf("%d",&no);
func(no);     //☆
return 0;
}

void func(int n)  //☆
{
while (n-->0)
putchar('*');
putchar('\n');
}


917 名前:デフォルトの名無しさん [2010/05/12(水) 23:02:57 ]
×func
○f

918 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 23:37:56 ]
プロトタイプ宣言と定義で戻り値の型が喰い違っている。

919 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 01:18:41 ]
>>915
#include <stdio.h>
#include <ctype.h>

/* function prototype */
void disp_char( int );

int main( void )
{
 char no;
 printf( "整数を入力してください:" );
 scanf( "%c", &no );

 if( isdigit( no ) == 0 ) {
  printf( "Error:数値以外の文字が入力されました\n" );
 } else {
  disp_char( no - '0' );
 }
  return 0;
}

void disp_char( int t )
{
 int i;
 char c = '*';

 for( i = 1; i <= t; i++ ) {
  printf( "%c", c );
 }
 printf( "\n" );
}

920 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 02:30:42 ]
>>908
もっと単純に考えたら?
Aの次のアルファベットって何?って聞かれたら困るのかな。そういうレベルよ。
Hの3つ前のアルファベットは?

で、zの次は何?って聞かれた時に、
・ないわー
・最初に戻ってa
・小文字終わったからA
とするか、そこは問題に明記されてないから、あなたが決めなきゃならないという話

921 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 02:31:23 ]
解決してタワーorz

922 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 03:55:38 ]
成りすましにマジレスしなくてもw



923 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 09:44:49 ]
Cでプログラム組んでます。
ファイルの扱い方で質問があります。

fopen、fread、fwrite、fseek、fclose
でファイルの読み込みや書き込みを行っているのですが
あるファイルを読み書き可能状態でfopenして
10バイトfwiteしたあと、fcloseせずに
書いたデータをファイルの最後から1バイトずつfseekして
freadして、その1バイトが特定の条件に一致した場合に
そこまで読み込んだデータを破棄して
10-fseekしたバイト数だけのファイルを作りたいのですが
そんなこと可能なのでしょうか?

fwiteする前に書き込みデータをチェックしたかったのですが
その部分には手を入れられないため、
1度書き込んだファイルの途中をぶった切れるのかが知りたいです。

■■■■■■■□□□

□を破棄して、■だけのデータを作りたいというようなイメージです。

924 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 09:55:29 ]
chsize

925 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 09:56:49 ]
>>923
ftruncate()が使えればできなくはないが、事情が許すなら別ファイルに書き出すのが無難。

926 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 10:00:44 ]
>>923
fclose()した後に切り詰めたいなら>924かtruncate()、開いたまま切り詰めたいならftruncate()。
但し、後者はファイルハンドルをfileno()で取得する必要あり。

927 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 17:53:32 ]
フィボナッチ数列を出力するプログラムを書いたのですが
どうもうまく動きません
どうすればいいでしょうか
#include<stdio.h>
#include<stdlib.h>
#define TERM 30
int main(void){
int fivo=0,n=0,temp;
FILE *fp;
fp=fopen("fivo.txt","wt");
if(fp==NULL){
fprintf(stderr,"ファイルオープンエラー");
exit(1);
}
while(fivo<=TERM){
if(fivo==1||fivo==2)n=1;
fprintf(fp,"F(%2d)=%10d\n",fivo,n);
fivo++;
temp=n;
n+=temp;
}
fclose(fp);
printf("正常に終了しました\nfivo.txtに保存しました");
return 0;
}






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<245KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef