前提・実現したいこと
1行目で抽出をトライする回数(変数名count)
2行目で抽出したい文字列(テストケースだとaiueo)
3行目以降は変数count分だけ改行区切りで文字列が入力されるので
2行目で指定された文字列が入っていれば、その文字列をそのまま出力する
仮に全ての行で指定文字列を含む文字列が入力されなければ
最後にNOと出力する
できないこと
mallocで確保したサイズ範囲内に、ちゃんと文字列を格納したい、けどできない
下記のコードで実行すると
mallocで約100バイト確保しているつもりなのですが(一応確認したところ、104バイトのサイズでした)
fgets(target_of_extraction,sizeof(target_of_extraction),stdin);
この部分で入力できる文字列は7文字まで切れてしまいます
この理由と解決方法を知りたいです
↓
実現したいこと:1行で最大100文字まで入力できるようにサイズを設定したいです
テストケース
1
aiueo
aiueokakikukeko
### 実行すると
1
aiueo
aiueokakikukeko
↓
aiueoka(7文字までしか入らない?)
### 書いたコード
#include<stdio.h> #include<string.h> #include<stdlib.h> #define LIMIT 102 int main(void){ char buf[LIMIT]={0}; //標準入力用 100文字まで int count;//文字列を入力する回数 fgets(buf,sizeof(buf),stdin); sscanf(buf,"%d",&count); int count_count = 0; char extraction_token[LIMIT]; //抽出する対象文字列 fgets(buf,sizeof(extraction_token),stdin); sscanf(buf,"%s",extraction_token); char *target_of_extraction = (char *)malloc(sizeof(char) * 102); //抽出元となる文字列を格納する用 1行に入力できるのは100文字まで for(int i = 0;i < count;i++){ fgets(target_of_extraction,sizeof(target_of_extraction),stdin); if(strstr(target_of_extraction,extraction_token) != NULL){ puts(target_of_extraction); }else{ strcpy(target_of_extraction,"No"); count_count++; if(count_count == count){ puts(target_of_extraction); } } } return 0; }
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
特になし
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/05 16:53
退会済みユーザー
2020/06/05 16:54
2020/06/05 16:55
退会済みユーザー
2020/06/05 16:55
2020/06/05 16:56
退会済みユーザー
2020/06/05 17:02
退会済みユーザー
2020/06/05 17:06
2020/06/05 17:09
2020/06/05 17:09
退会済みユーザー
2020/06/05 17:12
2020/06/06 00:44
2020/06/06 01:18
退会済みユーザー
2020/06/06 11:39
2020/06/06 11:41
退会済みユーザー
2020/06/06 12:30