프로그램을 실행하는 중 오류가 어디에 있습니까? 두 함수에서 FOR 루프의 행에 문제가 있다는 것을 알고 있습니다.프로그램 실행 중 오류 - C
디버거를 사용하여 실행 한 이유가 무엇인지 알 수 없습니다.
충돌이 있습니다 : program2.exe에서 0x00E214E5 처리되지 않은 예외 : 0xC0000005 : 0x00E25865 위치를 작성하는 액세스 위반.
그리고 나서 프로그램이 중지됩니다.
내 코드 :
#include <stdio.h>
char *what1 (char s[], char t[], int n);
int what2 (char str[], char c);
int main()
{
printf("%s\n", what1("hello", "world", 2));
printf("%d\n", what2 ("fkbf", 'o'));
return 0;
}
char *what1 (char s[], char t[], int n)
{
char *p=s;
while (*s++);
for (--s; n-- && (*s=*t); s++, t++);
*s='\0';
return p;
}
int what2 (char str[], char c)
{
char *ptr;
for (ptr=str; *ptr;)
if ((*str=*ptr++)!=c)
str++;
*str ='\0';
return ptr-str;
}
오류 메시지가 나타 납니까? 무슨 일이야? 무슨 일이 일어날 것으로 예상됩니까? – EClaesson
어떤 종류의 오류가 있습니까? 그것은 충돌인가? 또는 예기치 않은 수익? 쓰레기 수거? ... – MOHAMED
선택할 문자열 리터럴의 변경에 대해서는 어떤 질문을해야할지 모르겠지만 분명히 중복 질문입니다. –