- ベストアンサー
数値→文字列変換関数の作成方法
- 数値を文字列化する関数StoAを作成する。
- StoA関数は、引数で与えられた数値を文字列に変換し、そのポインタを返す。
- 具体的な実装方法や途中からの説明がないため、詳細な部分の助けを求めている。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- 数値→文字列変換関数
・数値を文字列化する関数StoAを作成する。 書式:char *StoA(short nVal); 引数:short nVal; 文字列化する数値 戻り値:数字文字列のポインタ 処理:nValで与えられたshort型の数値を文字列に変換し、そのポインタを返す。 呼び出し側の書式は以下の通り。 void main(void) { char *pc; pc = StoA(123); printf("%s\n", pc); pc = StoA(-1234); printf("%s\n", pc); } です。明日までの専門学校の課題なのでどうか、どなたか助けて下さい。
- ベストアンサー
- C・C++・C#
- 文字列→数値変換関数
・数字文字列を数値化する関数AtoS()を制作する。 書式:short AtoS(char *pStr, int *pRetCode); 引数:char *pStr; 文字列の先頭アドレス int *pRetCode; 動作の正否を返す 戻り値:pStrを数値化した値 処理: pStrで与えられた文字列をshort型に変換する。 呼び出し側の書式は以下の通りです。 void main(void) { short val; int code; val = AtoS("1234", & code); printf("%d\n",val); val = AtoS("-789", & code); printf("%d\n", val); } です。専門学校の明日の朝までの課題なのでどうか、どなたか助けて下さい。
- ベストアンサー
- C・C++・C#
- 文字列
・数字文字列を数値化する関数AtoS()を制作する。 書式:short AtoS(char *pStr, int *pRetCode); 引数:char *pStr; 文字列の先頭アドレス int *pRetCode; 動作の正否を返す 戻り値:pStrを数値化した値 処理: pStrで与えられた文字列をshort型に変換する。 呼び出し側の書式は以下の通りです。 void main(void) { short val; int code; val = AtoS("1234", & code); printf("%d\n",val); val = AtoS("-789", & code); printf("%d\n", val); } です。 自分自身で、正の整数はできました。見てください。そして、負の整数や、「int *pRetCode」の使い方をおしえてください。 #include <stdio.h> short AtoS(cahr *pStr, int *pRetCode); void main(void) { short val; int code; val = AtoS("1234", & code); printf("%d\n", val); val = AtoS("-789", & code); printf("%d\n", val); } short AtoS("char *pStr, int *pRetCode) { short suu; suu = 0; while("\n" != *pStr) { suu = *pStr - '0' + suu * 10; pStr++; } return(suu); } までしかできません。どなたか教えてください。
- ベストアンサー
- C・C++・C#
- 文字列リテラルの途中の文字を指すポインタについて
文字列リテラルの途中の文字を指すポインタについて 下記のプログラムで途中の文字を指すポインタは、&s1[7]で 書かれていますが, s1+7と書けないでしょうか、問題点を教えてください。; int main(void) { char *s1 = "Bohyo takahoshi"; char *s2 = &s1[7]; printf("フルネームは%sです\n",s1); printf(フアミリールームは%sです\n",s2);
- ベストアンサー
- C・C++・C#
- 文字列を表すための配列とポインタ
文字列を表すための配列とポインタ 配列とポインタは同様に扱えるもの、と思って、次のプログラムを作りました。処理系は、Visual Studio 2010 コマンドプロンプトです。 #include <stdio.h> void main(void) { char a[256]; char *b; printf("文字列を入力してください。\n"); printf("例「abcde」\n\n"); printf("配列型文字列を使います。\n"); scanf("%s", a); printf("文字列は%sです。\n\n", a); printf("ポインタ型文字列を使います。\n"); scanf("%s", b); printf("文字列は%sです。\n", b); } すると、まずコンパイル時に、 「warning C4700: 初期化されていないローカル変数'b'が使用されます」 と表示されました。そして、実行すると、「配列型文字列」の方は問題ないのですが、「ポインタ型文字列」の方の実行後に、 「x.exeは動作を停止しました。 問題が発生したため、プログラムが正しく動作しなくなりま した。プログラムは閉じられ、解決策がある場合は Windowsから通知されます。」 と表示され、エラーとして終了してしまいます。 「char *b;」 と宣言するところが問題のようですが、なぜなのかが分かりません。どなたか、解説をお願いします。
- ベストアンサー
- C・C++・C#
- 文字列の探索
ファイル名を指定して文字列の探索を行うというプログラムをC言語で作成したのですが、 コンパイルのときに警告で「問題のあるポインタの変換(関数 main )」と出て、うまい具合に動きません。改良点を教えてください。 #include<stdio.h> #include<string.h> #include<stdlib.h> unsigned char *s1; unsigned char *s2; unsigned char *cp; FILE *fp; char fname[64]; void TestStrStr(void); main(){ s1 = calloc(256, sizeof(unsigned char)); s2 = calloc(256, sizeof(unsigned char)); printf("Input Filename..."); scanf("%s",fname); while(1){ fp = fopen(fname, "r"); if(fp == NULL){ printf("ファイルを開くことができません...\n"); printf("Input Filename..."); scanf("%s",fname); }else break; } s1=fp; // printf("文字列1を入力してください:"); // scanf("%s",s1); printf("文字列2を入力してください:"); scanf("%s",s2); TestStrStr(); return 0; } void TestStrStr(void){ cp = strstr(s1, s2); if(cp == NULL) printf("'%s'に'%s'のいずれの文字も含まれない.\n", s1, s2); else printf("'%s'の中に現れる'%s'という文字列は%d文字目にある.\n", s1, s2, cp - s1 + 1); free(s1); free(s2); }
- ベストアンサー
- C・C++・C#
- mainから渡した文字列を関数内で書き換え
非常に基礎的な質問で申し訳ないのですが mainから渡した文字列を関数内で書き換えることができません。 int型の整数やchar型一文字はできるのですが。。。 例えば以下のようなソースでmainのABCをDEFに書き換えたいとき どのようにすればいいのでしょうか。 (関数の戻り値で変更という方法以外で) 以下のソースでは値は書き換わりませんでした。 void func(char *str2) { str2 = "DEF"; } int main() { char str1[20] = "ABC" printf("%s", str1); //ABC func(str1); printf("%s", str1); //DEFになるようにしたい }
- ベストアンサー
- C・C++・C#
- 文字列をうまく返してくれない
数値を文字列として呼び出し元に渡し、呼び出し元で文字列を数値に変えようとしたのですがatoi関数(strtolを使うと最初の文字のみ帰ってくるため2桁以上の数値に対応できない)を使うとうまく行きませんでした。 どのように変更したらatoiが使える文字列になりますか? #include <stdio.h> #include <stdlib.h> static struct{ char *name; }kuda[5]={ { "もも" , "りんご" , "みかん" , "バナナ" , "パイナップル" } } char *re_3( void ){ int a = 3; char str_h[100]; char *str; sprintf_s( str_h , 100 , "%d" , a ); *str = *str_h; //原因はおそらくここ return str; } void main( void ){ printf( "%s" , kuda[ atoi( re_3() ) ].name ); }
- ベストアンサー
- C・C++・C#
- メソッド間の文字列の受け渡し
初歩的な内容ですが、混乱してしまっているので、どなたか教えてください。 呼び元のメソッドで文字列を設定した文字列を呼び先subで取り出したいのですが、 アドレスから文字列を取り出すにはどうすればいいのでしょうか? #include <stdio.h> main() { char abc[]="ABC"; printf("%s\n", abc); sub(abc); /* 文字列abcのアドレスを値渡し */ printf("%s\n", abc); } sub(char *abc) /* 文字列abcのアドレスをポインタとして値受け取り */ { }
- ベストアンサー
- C・C++・C#
お礼
コンパイラNGがでてしまったんですよ。