Cで領域を超えた文字列を処理したい。
領域を超えた場合に勝手に文字列を出力させなようにして、while文の繰り返し処理をさせる方法を教えてください。
free関数では溢れたものまでは処理できなくて困ってます。
該当のソースコード
C言語
1#include<stdio.h> 2#include<stdlib.h> 3 4int OverFlow(char *str) 5{ 6 if (*str == NULL) 7 { 8 return -1; 9 } 10 return 1; 11} 12int main(void) 13{ 14 char *mojiretu; 15 int jdg = 0; 16 17 while (jdg != 1) 18 { 19 mojiretu = (char *)malloc(5); 20 if (mojiretu == NULL) 21 { 22 printf("メモリ確保失敗。\n"); 23 break; 24 } 25 26 printf("文字列を入力:"); 27 scanf_s("%s", mojiretu, 5); 28 jdg = OverFlow(mojiretu); 29 if (jdg == -1) 30 { 31 printf("領域を超えています。\n"); 32 free(mojiretu); 33 } 34 } 35 if (jdg == 1) 36 { 37 printf("入力された文字列は%sです。\n", mojiretu); 38 } 39 40 return 0; 41 42}
追記
文字列を入力:abcdefgh
領域を超えています。
文字列を入力:123
入力された文字列は123です。
となるようなプログラムを作りたいです。
回答5件
あなたの回答
tips
プレビュー