• ベストアンサー

C言語です。コレを使ってなにかプログラミングを組んでください

C言語です。コレを使ってなにかプログラミングを組んでください よろしくお願いします 何でも構いません #include<stdio.h> void str_copy( char dst[], char src[] ) { int i; for (i =0; src[i] != '\0'; i++) { dst[i] = src[i]; } dst[i]= '\0'; }

質問者が選んだベストアンサー

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.2

#include<stdio.h> void str_copy( char dst[], char src[] ) { int i; for (i =0; src[i] != '\0'; i++) { dst[i] = src[i]; } dst[i]= '\0'; } void main(int argc, char * argv[]) { char dst[10]; char *src = "ABCDEFGHIJKLMNOPQR" ; str_copy(dst,src); } これは、たぶんSEGMENTATION FAULTになるでしょう。 なぜなら、あなたのstr_copyはdstがsrcに等しいか大きいことを期待しているからです。 これが、脆弱性と言われている、ウイルスの攻撃で侵入される元なのです。 str_copyのdstは長さを指定して、dstにsrcをdstの長さ-1まで複写するのが脆弱性のないソースになります。

noname#128756
質問者

お礼

ありがとうございました ご丁寧に解説まで、恐れ入ります。

その他の回答 (1)

回答No.1

あなたの載せているプログラムの添削をしてほしいということですか? ちがうなら私の課題で出てたプログラムをどうぞ(゜-゜) /* 二次方程式 ax*x+bX+cの各係数a,b,cを入力し、解xが重解、実数解、虚数解 のどれになるか判別するプログラム */ # include<stdio.h> main () { int a,b,c,x; printf("a,b,cを入力してください\n"); scanf("%d %d %d" ,&a,&b,&c); printf("\na=%d b=%d c=%d",a,b,c); x=b*b-4*a*c; if(x==0){ printf("重解です\n"); } else if(x>0){ printf("実数解です\n"); } else{ printf("虚数解です\n"); } return(0); }

noname#128756
質問者

補足

分かりづらくてすみません 文字列のコピーです

関連するQ&A