前提・実現したいこと
キーボードからの入力をn回受け取って、表示するコードを書きたいと思っています。実装するにあたってのワークフローは以下のように考えていました。
fgets()
関数でキーボードからの入力を受け取る- ユーザーが任意の回数、キーボードからの入力をするので
malloc()
関数で動的に配列のメモリ領域を拡張する。
3.入力が"Ctrl+D",EOF"でなければ引き続き、1~2の動作に戻り、そうでない場合はフラグをたてて入力を止める。
4. キーボードから受け取った入力を収納していた配列をfor文で1つずつ改行しながらprintする。
上のワークフローの2.の過程で、動的に配列のメモリ領域を拡張する事ができず、実装する事ができていないです。
発生している問題・エラーメッセージ
.\assaighment.c: In function 'main': .\assaighment.c:21:20: warning: assignment makes integer from pointer without a cast [-Wint-conversion] str[count] = (char *)malloc(sizeof(char) * (str[count]+1));
該当のソースコード
C
1#include <stdio.h> 2#include <string.h> 3#include <stdlib.h> 4 5#define MAX_STR 30 6 7int main(void) { 8 char str[MAX_STR]; 9 10 int count = 0; 11 int Flag = 0; 12 13 while(Flag == 1) { 14 15 fgets(str,MAX_STR,stdin); 16 str[count] = (char *)malloc(sizeof(char) * (str[count]+1)); 17 count=count+1; 18 19 if (str[count] == EOF){ 20 Flag = 1; 21 22 } 23 } 24 25 int i; 26 for(i=0;i<count;i++) { 27 if((str[i] == EOF)){ 28 printf("%s\n",str[i],stdin); 29 } 30 } 31}
お忙しいとは思いますが、よろしくお願いいたします。
情報に不足がありましたら、ご指摘お願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。