写真の問題を解くようなプログラムを作ったのですが、長い文字列(具体的には26文字以降)を入力するとエラーが出てしまいます。どのように解決したらよろしいでしょうか?
文字列の長さおよび配列のサイズをあらかじめ指定することは許されていません。
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { int i, len; char *str, *word, cp; printf("Input An English word > "); scanf("%s", word); len = strlen(word); str = (char *)malloc(len * sizeof(*str)); strcpy(str, word); for(i=0; i<(len/2); i++) { cp = str[i]; str[i] = str[len-i-1]; str[len-i-1] = cp; } printf("%s\n", str); return 0; }
---execution results --- $ ./test Input An English word > dfjahdfhkjhdjkhfkhakjhdkjfhas Segmentation fault (core dumped) $ ./test Input An English word > adhfkjhakhdjkhfkjahskjdhjfk Segmentation fault (core dumped) $ ./test Input An English word > fakjdlkfhkljahsjkdhfkhalsd Segmentation fault (core dumped) $ ./test Input An English word > fajkhdkhfkjahskjdhfkjhaks skahjkfhdjkshajkfhkdhkjaf $ ./test Input An English word > fhakdjhfkjhakjsdhfkjhskjh hjkshjkfhdsjkahjkfhjdkahf $ ./test Input An English word > flkdhfhakjhdkjfhkajhdkjfh hfjkdhjakhfjkdhjkahfhdklf
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。