cygwinのインストールが無事終わり、前日のソースを実行したら
無事動きました。ただちゃんと確保できてるのかよくわからない。
そこで入力した文字列の長さ分だけメモリ確保するソースを書きました。
次のとおり。(日経ソフトウェアの付録参照)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *strmemory(char *s){
char *p;
int len;
len = strlen(s);
p = malloc(len + 1);
if(p == NULL){
printf("確保失敗n");
exit(1);
}
strcpy(p, s);
return p;
}
main(){
char buf[256], *str;
printf("文字を入力して下さい。n");
gets(buf);
str = strmemory(buf);
printf("bufのサイズは、%dバイトです。n", sizeof buf);
printf("strのサイズは、%dバイトです。n", strlen(str));
free(str);
}
【実行結果】
文字を入力して下さい。
Hello, World!!!!
bufのサイズは、256バイトです。
strのサイズは、16バイトです。
サイズ固定のbufは256バイト。
動的にメモリを確保したstrは、
入力した「Hello, World!!!!」に合わせて16バイト。
うまくいきました。
無事動きました。ただちゃんと確保できてるのかよくわからない。
そこで入力した文字列の長さ分だけメモリ確保するソースを書きました。
次のとおり。(日経ソフトウェアの付録参照)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *strmemory(char *s){
char *p;
int len;
len = strlen(s);
p = malloc(len + 1);
if(p == NULL){
printf("確保失敗n");
exit(1);
}
strcpy(p, s);
return p;
}
main(){
char buf[256], *str;
printf("文字を入力して下さい。n");
gets(buf);
str = strmemory(buf);
printf("bufのサイズは、%dバイトです。n", sizeof buf);
printf("strのサイズは、%dバイトです。n", strlen(str));
free(str);
}
【実行結果】
文字を入力して下さい。
Hello, World!!!!
bufのサイズは、256バイトです。
strのサイズは、16バイトです。
サイズ固定のbufは256バイト。
動的にメモリを確保したstrは、
入力した「Hello, World!!!!」に合わせて16バイト。
うまくいきました。