10/05/12 07:40:39
>>880
文字コードの文字のところ一部抜粋。
#include <stdio.h>
int main(void)
{
int i;
for (i=61;i<123;i++)
{
printf("%c(%3d) ",i,i);
if((!(i%10))||(i==122))printf("\n");
}
return 0;
}
893:デフォルトの名無しさん
10/05/12 08:03:20
>>882
_stprintfから、swprintfの存在を知り、問題なく実数でも扱えて
処理できました。
ありがとう!
894:デフォルトの名無しさん
10/05/12 08:31:06
文字コード云々じゃなくてさ、問題の意味がわからないって質問だろ?
アルファベットにアルファベットを足すとか言ってるし、「整数 n」←このnをアルファベットだと思ってるんじゃないの?
入力されたアルファベットにnというアルファベットを足すってどういう意味って聞いてるんじゃないの?
895:デフォルトの名無しさん
10/05/12 08:58:14
初心者質問していい?
896:デフォルトの名無しさん
10/05/12 09:02:10
だめ
897:デフォルトの名無しさん
10/05/12 09:51:53
>>895
どうぞ。
>>894
>「整数 n」←このnをアルファベットだと思ってるんじゃないの?
その発想はなかったw
898:デフォルトの名無しさん
10/05/12 12:11:13
どうも元質問者は VBからの移行なのか variant型 が当然のようで
変数 a に 文字の '1' を与える
→ 整数演算の時 値として 1 に評価される
という思考から抜け出せないでいるようだ
899:デフォルトの名無しさん
10/05/12 13:46:27
PHPとかその辺混乱しまくりw
900:デフォルトの名無しさん
10/05/12 15:29:52
いつの話してんだ
901:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/05/12 19:01:11
スタックがあふれるならヒープに取ればいいじゃない、ということで、
mallocとか使って動的にメモリを確保するんです。
多分その段階だとポインタになれてないだろうから、がんばれ、とエールを。
903:デフォルトの名無しさん
10/05/12 19:05:58
取り敢えず、スタックの割り当てを増やすのも手かと。
904:デフォルトの名無しさん
10/05/12 19:09:29
適当にテストするならグローバルにすればよころう。
905:901
10/05/12 19:13:58
>>902
ありがとうございます.
もう一度調べなおしてみます.
906:デフォルトの名無しさん
10/05/12 20:06:33
>>901
>editbin /stack:1000000
とかやっとけば OK
907:デフォルトの名無しさん
10/05/12 20:38:04
>>906
なんでそんなひどいこというの?
908:デフォルトの名無しさん
10/05/12 21:43:28
>>894
質問したものですが
さすがにそれはないです。このスレでも意見分かれてませんか?
nをたくさんたすとzまでいってまたaに戻るとか。
アルファベトに数値をたすって意味が分からないんですよ。
たとえばAに1000足したら?
Aとはそもそも何か、16進数の10番目のやつか、何ちゃら
規格とかのコードなのか。それが分かりません
909:デフォルトの名無しさん
10/05/12 21:50:49
てst
910:デフォルトの名無しさん
10/05/12 21:55:19
>>908
> アルファベトに数値をたすって意味が分からないんですよ。
'A' は0x41や65の別表現でしかない。('A'==0x41==65)
全て内部的にはただの数値。
'A'+1==0x42==66=='B'
911:デフォルトの名無しさん
10/05/12 21:55:20
アルファベットに数字を足す問題ですが、
クラスの友達に聞いて解決しました。
ここの人たちは理解力がなさすぎだと思います
912:デフォルトの名無しさん
10/05/12 21:56:26
>>908
'a'+1='b'
これならわかる?
913:デフォルトの名無しさん
10/05/12 21:57:59
>>908
URLリンク(ja.wikipedia.org)
ここを読めば文字「A」が65に対応してることがわかるとおもうよ。
914:デフォルトの名無しさん
10/05/12 22:01:28
まぁ、普通はアルファベットに数値を足すと聞いたらアルファベットを並べて何文字か後のことだ。なんて思わない罠。
915:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/05/12 23:02:57
×func
○f
918:デフォルトの名無しさん
10/05/12 23:37:56
プロトタイプ宣言と定義で戻り値の型が喰い違っている。
919:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/05/13 02:30:42
>>908
もっと単純に考えたら?
Aの次のアルファベットって何?って聞かれたら困るのかな。そういうレベルよ。
Hの3つ前のアルファベットは?
で、zの次は何?って聞かれた時に、
・ないわー
・最初に戻ってa
・小文字終わったからA
とするか、そこは問題に明記されてないから、あなたが決めなきゃならないという話
921:デフォルトの名無しさん
10/05/13 02:31:23
解決してタワーorz
922:デフォルトの名無しさん
10/05/13 03:55:38
成りすましにマジレスしなくてもw
923:デフォルトの名無しさん
10/05/13 09:44:49
Cでプログラム組んでます。
ファイルの扱い方で質問があります。
fopen、fread、fwrite、fseek、fclose
でファイルの読み込みや書き込みを行っているのですが
あるファイルを読み書き可能状態でfopenして
10バイトfwiteしたあと、fcloseせずに
書いたデータをファイルの最後から1バイトずつfseekして
freadして、その1バイトが特定の条件に一致した場合に
そこまで読み込んだデータを破棄して
10-fseekしたバイト数だけのファイルを作りたいのですが
そんなこと可能なのでしょうか?
fwiteする前に書き込みデータをチェックしたかったのですが
その部分には手を入れられないため、
1度書き込んだファイルの途中をぶった切れるのかが知りたいです。
■■■■■■■□□□
□を破棄して、■だけのデータを作りたいというようなイメージです。
924:デフォルトの名無しさん
10/05/13 09:55:29
chsize
925:デフォルトの名無しさん
10/05/13 09:56:49
>>923
ftruncate()が使えればできなくはないが、事情が許すなら別ファイルに書き出すのが無難。
926:デフォルトの名無しさん
10/05/13 10:00:44
>>923
fclose()した後に切り詰めたいなら>924かtruncate()、開いたまま切り詰めたいならftruncate()。
但し、後者はファイルハンドルをfileno()で取得する必要あり。
927:デフォルトの名無しさん
10/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;
}