C言語の課題で困ってます;
学校の課題で、キーボードから文字を入力する(最大80文字)。入力された文字列と、入力した文字列を逆順にした文字列を表示する。(malloc,freeを使って作成して下さい)
ヒントで
#invlude <stdio.h>
void main(void){
char *buf; //入力文字列用
char *seq; //入力文字列用コピー用
char *rev; //逆順文字列用
int lec, i;
buf =(char*)malloc(81);
printf("文字列を入力:");
scanf("%s"buf );
for(i = 0; buf[i] ??? '\0'; i++){
}
Ien = i; /* lenに文字列の長さが入る */
seq = ???(??? + 1); /* len+1文字文確保*/
for(i = 0; ???; i++){
seq[0] = buf[0];
}
free(buf);
rey = ???(len + 1);
for(i = 0; < len; i++){
rev[len - i - 1] = seq[i];
}
ren[i] ~ '\0';
printd("入力文字列 : %s\n",sep);
でたんですが、全然分からなくて足りない部分の答えを教えてもらえると助かります;
No.3ベストアンサー
- 回答日時:
良いヒントですね。
足りないところ、間違っているところ取り混ぜてのヒントなので、この添削は勉強になると思います。
ヒントに沿って作れば、下記のようになるのでしょう。
これでできたというのではなく。
元のヒントと比べて検討しましょう。最期だけ???にしておきました。
#include <stdio.h>
#include <stdlib.h>
void main(void){
char *buf; //入力文字列用
char *seq; //入力文字列用コピー用
char *rev; //逆順文字列用
int len, i;
buf =(char*)malloc(81);
printf("文字列を入力:");
scanf("%s",buf );
for(i = 0; buf[i] != '\0'; i++){
}
len = i; /* lenに文字列の長さが入る */
seq = (char*)malloc(len + 1); /* len+1文字文確保*/
for(i = 0; i<=len; i++){
seq[i] = buf[i];
}
free(buf);
rev = (char*)malloc(len + 1);
for(i = 0; i< len; i++){
rev[len - i - 1] = seq[i];
}
rev[i] = '\0';
printf("入力文字列 : %s\n",???);/*ヒントでは'sep'ですがそれではないですね。逆文字列の出力です。自分で考えて!*/
}
No.5
- 回答日時:
・#invlude→スペルミス
・//入力文字列用コピー用→bufに入力済みなので不要
・Ien = i; /* lenに文字列の長さが入る */ →スペルミス、後strlen使わないの?
・rey = ???(len + 1); →スペルミス
・ren[i] ~ '\0'; →「~」はビット排他的論理和(XOR)
・printd("入力文字列 : %s\n",sep);→スペルミス
自分がやるなら
S="ABCDEFGH\x0"
という文字列があったらstrlenは8
配列先の領域を「8+1」分確保。
Sの最後尾文字「H」の配列位置はS[7]
これをコピー先のV[0]に持っていく。
後は、Hの配列インデックスを-1しながら、
配列先Vのインデックスを+1させる。
配列元のインデックスが0以下になったら終了。
配列先のV[8]に\x0を代入する。
No.4
- 回答日時:
#3です。
seqとrevを解放するの忘れてました。
free(seq);
free(rev);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# 【C言語】全角文字の配列を、全角のまま1文字ずつ出力する方法 4 2023/05/09 15:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
_tcscpy_s(wcscpy_s)の第二引数...
-
TCL言語で文字列検索方法を教え...
-
プログラムによく出てくるst...
-
ASPで別サイトの内容を Stream ...
-
括弧が含まれる文字列の括弧の...
-
fgetsで配列に数字を入れる。
-
VBA-DLLの引数受け渡しについて
-
ソースコードの間違い (C言語)
-
曜日を格納する配列の大きさ
-
C#でstringをポインタとして渡す
-
C++で入力した文字列から数字を...
-
VC++6.0 MFC ダイアログバーを...
-
ExcelVBAで質問です。離れた二...
-
c言語
-
C言語 配列の長さの上限
-
パイソンの
-
mallocについて
-
Excelですべての組合せ(重複組...
-
関数から配列を返すには?
-
文字列内の数字削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C++で入力した文字列から数字を...
-
nullと""、\\0とEOFの違いにつ...
-
プログラムによく出てくるst...
-
%dなどの違い
-
WSH(VBS)でJSONの文字列を読み...
-
TCL言語で文字列検索方法を教え...
-
C#でstringをポインタとして渡す
-
16進数を2文字ずつ配列に格納し...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
C++で文字列の右端から特定の文...
-
シリアル通信で0x00を送信した...
-
VBA-DLLの引数受け渡しについて
-
数字の入った配列をファイルへ...
-
c#で他のアプリの文字入力フォ...
-
構造体→文字列→構造体 をする方法
-
Shift_JIS(16進)を文字に変換す...
-
バイナリファイル中の日本語文...
-
C言語の課題で困っています;
-
[C++]WCHARの1文字目しか表示で...
-
VB6.0でのバイナリデータの扱い...
おすすめ情報