実現したいこと
書いたコードがなぜエラーとなるのか理解する
前提
c言語のstrcpy関数、strncpy関数を自分で作っています。
しかし、その最中でエラーが起こってしまいました。
何が原因か見当がつかないため質問しています。
発生している問題・エラーメッセージ
文字列にs1何かエラーが生じている。
Run-Time Check Failure #2 - Stack around the variable 's1' was corrupted.
該当のソースコード
C
1ソースコード#include <stdio.h> 2 3char* strcpy(char* s1, const char* s2) { 4 char* t = s1; 5 while (*s1++ = *s2++); 6 return t; 7} 8 9 10char* strncpy(char* d, const char* s, size_t n) { 11 12 char* t = d; 13 int i = 0; 14 while (*d++ = *s++) { 15 i++; 16 if (i==n) 17 break; 18 } 19 i++; 20 for (; i < n; i++) 21 d[i] = '\0'; 22 23 return t; 24} 25 26int main(void) { 27 28 char s1[10]; 29 char* x = "XXXXXXXXX"; 30 31 strcpy(s1, x); strncpy(s1, "12345", 3); printf("s1=\"%s\"\n", s1); 32 strcpy(s1, x); strncpy(s1, "12345", 5); printf("s1=\"%s\"\n", s1); 33 strcpy(s1, x); strncpy(s1, "12345", 7); printf("s1=\"%s\"\n", s1); 34 return 0; 35}
試したこと
デバック無しで動作させた場合、やりたいこと自体はできているようでした。
補足情報(FW/ツールのバージョンなど)
```Run-Time Check Failure #2 - Stack around the variable 's1' was corrupted.
ではなく
Run-Time Check Failure #2 - Stack around the variable 's1' was corrupted.
```
と書いてください。
```c言語
ソースコード#include <stdio.h>
ではなく、
```C
#include <stdio.h>
と書いてください。
ご指摘ありがとうございます。
使い始めたばかりでフォーマットが分かっていませんでした。
回答者さんが見やすいように気を付けます。
気を付けるのなら、今すぐ質問を修正してください。
修正しました。

回答2件
あなたの回答
tips
プレビュー