コメントアウトしたところと、標準入力から文字列を2つ読み取り、作成したcreate_word_pair関数を用いて、新たにそれらのデータが代入された構造体を作成し、これらのメンバ変数をすべて標準出力に表示するプログラムを作りたいのですが、教えてください。
#include<stdio.h>
#include<string.h>
word_pair_t create_word_pair(char *a,char *b)
strcmp(a,b);
if(strcmp(a,b)==0) //2つの文字が同じ場合はエラーメッセージを出力の後、longer_wordに入力された文字列を、shoeter_wordに空の文字を代入
{
printf("エラーです");
strcpy(longer_word,a);
strcpy(shoter_word,'/0');
}
else if() //2つの文字列が同じな場合に辞書的に後ろのものをlonger_wordに、前のものをshorter_wordに代入するプログラム
else if(strcmp(a,b)){ //文字列を比較し、長い文字列をlonger_wordに、短い文字列をshorter_wordへ代入
a>b;
strcpy(longer_word,a); strcpy(shorter_word,b);
}
else if(strcat(a,b)) //スペース区切りで結合したものを代入
{
combined_word=strcat(a,b);
else //それぞれの文字列の長さをlonger_wordおよびshorter_wordに代入
}
strcpy(longer_word,a); strcpy(shorter_word,b);
int main(void){
typedef struct word_pair
{
char longer_word[10]; //長い方の文字列
char shorter_word[10]; // 短い方の文字列
char combined[20]; //連結した文字列
int longer_word_length; //長い方の文字列の長さ
int shorter_word_length; //短い方の文字列の長さ
}word_pair_t;
char x[10],y[10];
printf("2つの文字を打ち込んでください。");
scanf("%s %s",x,y);
printf("連結したものは%sです",word_pair.combined[20])
return 0;
}
No.2
- 回答日時:
strcpy(shoter_word,'/0');
の第2引数は '\0' じゃなくて '/0' ですよ>#1.
と突っ込んでおいて, と.
プログラム中
if(strcmp(a,b)==0) //2つの文字が同じ場合はエラーメッセージを出力の後、longer_wordに入力された文字列を、shoeter_wordに空の文字を代入
の部分は「2つの文字」といっているが「どの文字とどの文字を比較しているのか」がわからない. このコメントが「2つの文字列」の間違いであるとすればプログラムの strcmp に合致するが, そうすると今度はその次の
else if() //2つの文字列が同じな場合に辞書的に後ろのものをlonger_wordに、前のものをshorter_wordに代入するプログラム
と同じ条件になるので論理的に矛盾する.
No.1ベストアンサー
- 回答日時:
ここだと2012年に同じようなネタが。
Web検索すると知恵袋で2010年に同じようなネタが。
そのまま検索すると2015年に回答らしきものをgithub.comに登録されている方も。
課題のコピペクリアの為には問題文の中から特徴的と思われる単語でWeb検索するのが勝ち組への第一歩ですよ(^_^)v
ちなみに今回は「create_word_pair」でWeb検索。
プログラマーと言われる職に就きたいなら、上記の勝ち組メソッドは最悪なパターンですけどね。
# 出題者がコピペ回答していないかチェックしている可能性もあるやも知れませんが、そんなのはこちらの知ったことではない。
>strcmp(a,b);
比較した結果を捨てているので無駄です。
>strcpy(shoter_word,'/0');
'\0'をコピー元のアドレスとして参照します。
恐らくヌルポアクセスでガッ!!です。
# つまりOSに殺されます。
>combined_word=strcat(a,b);
以前のココでの回答でも書きましたが、配列に連結結果をコピー出来ません。
# aに対して連結実行します。(というかコンパイルエラーでしょう)
>printf("連結したものは%sです",word_pair.combined[20])
バッファオーバーランです。
パディングがアドレスとして解釈されるか、longer_word_length辺りがアドレスと解釈され、
恐らくOSに殺されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- その他(パソコン・周辺機器) WINDOWS11 IMEの日本語入力で困っています 4 2023/04/29 19:24
- Word(ワード) 表の縦罫線を移動するピッチ 1 2022/10/12 12:24
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- Word(ワード) WindowsのWordについて質問をおねがいします! Wordに文字を入力するまでは良いのですが、 2 2022/08/11 17:08
- PDF I LOVE PDF利用 pdfからWordに変換について 回答お願いいたします。 無料のI LOV 1 2022/05/13 13:24
- PDF acrobatでwordファイルをpdfに変換すると文字化けする 3 2023/02/10 09:31
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgets関数を使用したときの文字...
-
文字列中に含まれる文字の個数...
-
Cで「大文字、小文字の判定」は...
-
反転した数値を表示させるやり方
-
C言語 空白の行(改行のみ)が...
-
CStringのFindで文字列検索を行...
-
小文字のみを数える方法
-
strstrを利用しない文字列検索...
-
文字列の途中に「0」がある場...
-
C言語、単語ごとに改行したい
-
sscanfとscanfの違いがよくわか...
-
文の意味
-
データ数値を16進文字列でprint...
-
c言語のプログラミングでキーボ...
-
16進数の文字列
-
C言語のfor文です。 繰り返しの...
-
2÷3などの余りについて
-
信頼区間の1.96や1.65ってどこ...
-
Enterキーを押されたら次の処理...
-
*をユーザーが入力した数字の数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CStringのFindで文字列検索を行...
-
sscanfとscanfの違いがよくわか...
-
反転した数値を表示させるやり方
-
fgets関数を使用したときの文字...
-
C言語 空白の行(改行のみ)が...
-
charと%c , %s の関係について
-
C言語のステップ数をカウントす...
-
fgetsで拾われる改行文字を削除...
-
itoaわかりません
-
C言語で16進数文字列から16進数...
-
strstrを利用しない文字列検索...
-
文字列中に含まれる文字の個数...
-
Cで「大文字、小文字の判定」は...
-
1行の文字列を時間差で表示する...
-
エディットボックスに入力され...
-
[Java]文字列分割
-
文字列の途中に「0」がある場...
-
教えていただけませんか?C言語...
-
atoiでの文字列以外のエラー処...
-
fgetsでバッファ残留文字列を無...
おすすめ情報