アプリ版:「スタンプのみでお礼する」機能のリリースについて

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';
}

A 回答 (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まで複写するのが脆弱性のないソースになります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/11/08 21:34

あなたの載せているプログラムの添削をしてほしいということですか?



ちがうなら私の課題で出てたプログラムをどうぞ(゜-゜)

/* 二次方程式 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);
}

この回答への補足

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

補足日時:2010/11/08 20:10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!