#include<stdio.h>
#include<string.h>
#define USER_MEM (10*1024)
typedef struct {
unsigned short int vol_level;
int mute_stat;
}audio_state;
static audio_state aud_stat;
static unsigned char user_mem[USER_MEM];
void aud_read(unsigned char * data)
{
unsigned short pos =0;
memcpy(data,&user_mem[pos],sizeof(data));
printf("The Read data is:%c",*data);
}
void aud_write(unsigned char * data)
{
unsigned short pos =0;
memcpy(&user_mem[pos],data,sizeof(user_mem[pos]));
printf("The written data is:%s",*data);
}
int main()
{
aud_stat.vol_level=10;
aud_stat.mute_stat=20;
aud_write((unsigned char*)&aud_stat);
aud_read((unsigned char*)&aud_stat);
}
이 프로그램에서 세그먼트 오류가 발생했습니다. 몇 바이트의 데이터를 쓰고, 몇 바이트의 데이터를 쓰고 싶었습니다. 위 코드를 작성했지만 seg 오류로 오류가 발생했습니다. 이 문제를 해결하도록 도와주세요.memcpy() 동안 seg 오류
는
편집#include<stdio.h>
#include<string.h>
#define USER_MEM (10*1024)
typedef struct {
unsigned short int vol_level;
int mute_stat;
}audio_state;
static audio_state aud_stat;
static unsigned char user_mem[USER_MEM];
void read(unsigned char * data,unsigned short num)
{
printf("Into Read!\n");
unsigned short pos =0;
memcpy(data,&user_mem[pos],num);
printf("The Read data is:%c",*data);
}
void write(unsigned char * data,unsigned short num)
{
printf("Into Write!\n");
unsigned short pos =0;
memcpy(&user_mem[pos],data,num);
printf("The written data is:%c",*data);
}
int main()
{
aud_stat.vol_level=10;
aud_stat.mute_stat=20;
write((unsigned char*)&aud_stat,sizeof(audio_state));
read((unsigned char*)&aud_stat,sizeof(audio_state));
}
출력 : AIUP_read
에서
당신이 디버거를 통해 실행나요 배울 수있는 고통스럽게 느린 방법이 될 것입니다 -
나는 강력하게이 프로그램에 더 많은 시간을 소비하기 전에 The C Programming Language by Kernighan and Ritchie을 읽어 보시기 바랍니다? 'memcpy'에 주어진 포인터가 유효한지 확인 했습니까? –
codepad.I 사용하고 있습니다. C 소프트웨어가 설치되어 있지 않습니다. – Angus
@Angus : 하나 사주세요. – leppie