Case 1
Text9.Text = "AB";
Text10.Text = "A"; // 1文字目
Text11.Text = "B"; // 2文字目
case 2;
Text9.Text = "Ab";
Text10.Text = "A";
Text11.Text = "b";
case 3;
Text9.Text = "aB";
Text10.Text = "a";
Text11.Text = "B";
case 4;
Text9.Text = "ab";
Text10.Text = "a";
Text11.Text = "b";
上記のようなCase 文を C を使って作成したいのですが,
A~J の大文字とa~jまでの小文字をつかって,2文字の文字列をつくるとき,
1文字目と2文字目が,形態も名称も異なる文字列(例 AB , Ab aB, ab, AC, Ac aC ac, ...)のcase文をつくりたいのですが,
'const char *' 型は 'char *' 型に変換できないというエラーメッセージがでてしまいます.下記プログラムをどう直せばいいかおしえてください.
#include <stdio.h>
#define MAX_NAME 256
int main(void)
{
const char *NAME12 = "Text9";
const char *NAME1 = "Text10";
const char *NAME2 = "Text11";
const char *ALPH = "ABCDEFGHIJabcdefghij";
FILE *fp = NULL;
char f_name[MAX_NAME];
int count = 0;
char *p = ALPH;
char *q = ALPH;
printf("ファイル名:");
scanf("%s", f_name);
fp = fopen(f_name, "w");
if (fp == NULL) {
printf("'%s':ファイルが見つかりません\n", f_name);
} else {
for (p = ALPH; *p != '\0'; p++) {
for (q = ALPH; *q != '\0'; q++) {
if (*p != *q) {
count++;
fprintf(fp, "Case %d\n", count);
fprintf(fp, "%s.Text = \"%c%c\"\n", NAME12, *p, *q);
fprintf(fp, "%s.Text = \"%c%c\"\n", NAME1, *p, *q);
fprintf(fp, "%s.Text = \"%c%c\"\n", NAME2, *p, *q);
}
}
}
fclose(fp);
}
return 0;
}
No.3ベストアンサー
- 回答日時:
★回答者 No.2 さんと同じです。
・『const char *』型と『char *』型のタイプを合わせます。
・つまり、
const char *ALPH = "ABCDEFGHIJabcdefghij";
const char *p = ALPH;
const char *q = ALPH;
・とするか、
char *ALPH = "ABCDEFGHIJabcdefghij";
char *p = ALPH;
char *q = ALPH;
・とします。
・また、ちょっと間違いがあるので指摘します。
・『fprintf(fp, "%s.Text = \"%c%c\"\n", NAME1, *p, *q);』は、
『fprintf(fp, "%s.Text = \"%c\"\n", NAME1, *p );』です。
・『fprintf(fp, "%s.Text = \"%c%c\"\n", NAME2, *p, *q);』は、
『fprintf(fp, "%s.Text = \"%c\"\n", NAME2, *q);』になります。
・以上。分かりますか?
●小言
・このプログラムで出力されるCソースを、何かの処理ルーチンとして使うのですか?
・もっと良い方法がありますけど。→文字列を動的に作成する方法はどうでしょう。
・以下にサンプルを載せておきます。→処理速度は少し落ちます。ループしているので。
●サンプル
void MakeString( int num, const char **text9, const char **text10, const char **text11 )
{
static char buff9[ 4 ], buff10[ 4 ], buff11[ 4 ];
static const char *ALPH = "ABCDEFGHIJabcdefghij";
const char *p = ALPH;
const char *q = ALPH;
for ( p = ALPH ; *p != '\0' ; p++ ){
for ( q = ALPH ; *q != '\0' ; q++ ){
if ( *p != *q ){
if ( --num <= 0 ){
*text9 = buff9; sprintf( buff9, "%c%c", *p, *q );
*text10 = buff10; sprintf( buff10, "%c", *p );
*text11 = buff11; sprintf( buff11, "%c", *q );
return;
}
}
}
}
}
●使用例
const char *Text9;
const char *Text10;
const char *Text11;
MakeString( 123, &Text9, &Text10, &Text11 );
・以上。おわり。
No.2
- 回答日時:
VisualC++のコンパイラでコンパイルしたら
その部分はWarningにはなりましたがErrorではなかったです。
C++ならErrorなのでC++としてコンパイルしたのかな?
修正ですが、
> char *p = ALPH;
> char *q = ALPH;
を
const char *p = ALPH;
const char *q = ALPH;
と直せば良さそうです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
多重定義が起きている?--lnk2005エラー:VC++
C言語・C++・C#
-
char*を初期化したいのですが
C言語・C++・C#
-
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
-
4
LPSTR型の初期化について
C言語・C++・C#
-
5
外部依存関係について
C言語・C++・C#
-
6
適切な変換関数が存在しない???
C言語・C++・C#
-
7
CString から LPCTSTRの型に変換
C言語・C++・C#
-
8
関数から配列を返すには?
C言語・C++・C#
-
9
小数点入りの文字列をfloat型に変換
C言語・C++・C#
-
10
C言語での引数の省略方法
C言語・C++・C#
-
11
LPCWSTRとchar
C言語・C++・C#
-
12
unsigned long long 型のフォーマット指定子
C言語・C++・C#
-
13
C++にてtemplateで受け取った任意の型の変数が何型であるかを判定したい
C言語・C++・C#
-
14
error C2664: 'LPCTSTR' に変換できません。
C言語・C++・C#
-
15
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
16
C言語にて構造体のメンバがNULLであるかを判定するサンプルを作成して
C言語・C++・C#
-
17
c++,ある関数のクラスから別のクラスの関数を呼ぶ
C言語・C++・C#
-
18
#define _CRT_SECURE_NO_WARNINGS について
C言語・C++・C#
-
19
C言語 exitの使い方
C言語・C++・C#
-
20
画面を強制的に再描画させる方法
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
charでの計算?
-
文字列から空白を取り除きたい...
-
c++ 文字列を入力して、一文字...
-
C言語のfor文です。 繰り返しの...
-
enumの記述について。
-
プログラムを作成(c言語)
-
'const char *' 型は 'char *' ...
-
下記のプログラムがコンパイラ...
-
int main()の・・・
-
Linuxでフォルダ内全ファイル名...
-
C言語の入力した文字を反転させ...
-
charからLPTSTRへの変換方法
-
【C言語】文字型と整数型の違い
-
pingの結果を取得する方法
-
strlen関数と同じ働きをする関...
-
sprintf関数の作り方
-
atoi( ) の反対をやりたい
-
C言語 共用体について コマンド...
-
3桁区切(コンマ)記号をつけ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
charからLPTSTRへの変換方法
-
charでの計算?
-
配列をnビットシフトする
-
'const char *' 型は 'char *' ...
-
型変換
-
テキストデータをそのままバイ...
-
文字列から空白を取り除きたい...
-
CStringをwchar_tに変換したい
-
絶対パスからのファイル名の切...
-
fgetsなどのときのstdinのバッ...
-
ネットワークにつながっている...
-
str系関数を使わずに二つの文字...
-
3桁区切(コンマ)記号をつけ...
-
atoi( ) の反対をやりたい
-
double型の値をchar配列に変換...
-
C言語のfor文です。 繰り返しの...
-
switch文で文字を比較すること...
-
ファイル名である文字列からbas...
-
c++ 文字列を入力して、一文字...
-
strncpyと_tcsncpy_sのヌルの扱...
おすすめ情報