한 유형의 데이터를 다른 유형으로 변환하는 간단한 코드를 만들려고합니다. 나는 strtok
을 사용하여 데이터의 한 부분을 추출한 다음 정확한 출력을 찾기 위해 if
조건의 긴 시리얼을 실행합니다. 그러나 정확한 출력이 발견되어 변수 currentNote
에 쓰여지면 알아낼 수없는 이유로 변수 comma
을 덮어 쓰는 것으로 보입니다. 여기에 코드의 문제가있는 부분입니다 :strcpy가 다른 변수를 덮어 쓰지 않도록 방지하는 방법은 무엇입니까?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char sequence[] = "c1[M],c1[M],d3[L],c3[M],b2[M],(#A-2)[IKN],(#A-1)[L]";
char copy[] = "";
char *comma;
char currentNote[4] = "";
strcpy(copy, sequence);
comma = strtok(copy, ",");
if(strstr(comma, "c1") != 0) //c1
{
printf("%s\n\n", comma); //Here ...
strcpy(currentNote, "C5 ");
printf("%s\n\n", comma);
}
return 0;
}
는 그리고 여기 결과입니다 :
c1[M]
cC5
strcpy(currentNote, "C5 ");
이 원인이 있다고 할 필요가. 나는 왜 그런지 모르지만, 나는 그것을하고자하는 것처럼 c1[M]
을 돌려 줄 것이라고 생각했다. 좀 더 실험을 한 후에는 두 번째 printf("%s\n\n", comma);
이 항상 sequence
의 첫 번째 문자 다음에 C5
을 반환한다는 것을 알게되었습니다. 누군가가 알면 좋겠어. 아주 좋을거야.
아마도'copy'에 물건을 저장할 메모리가 있습니다 –
그건 컴파일되지 않습니다. 'currentNote'가 선언 된 곳은 어디입니까? – ikegami
'strcpy (copy, sequence)'는 좋지 않습니다. 'copy'는 충분한 공간이 없습니다. – ikegami