1.找错题
试题1:
void test1()
{
char string[10];
char* str1 = “0123456789”;
strcpy( string, str1 );
}
试题2:
void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<10; i++)
{
str1[i] = ‘a’;
}
strcpy( string, str1 );
}
试题3
void test3(char* str1)
{
char string[10];
if( strlen( str1 ) <= 10 )
{
strcpy( string, str1 );
}
}
试题4
void GetMemory( char *p )
{
p = (char *) malloc( 100 );
}
void Test( void )
{
char *str = NULL;
GetMemory( str );
strcpy( str, “hello world” );
printf( “%s\n”, str );
}
试题5
char *GetMemory( void )
{
char p[] = “hello world”;
return p;
}
void Test( void )
{
char *str = NULL;
str = GetMemory();
printf( “%s\n”, str );
}
试题6
void GetMemory( char **p, int num )
{
*p = (char *) malloc( num );
}
void Test( void )
{
char *str = NULL;
GetMemory( &str, 100 );
strcpy( str, “hello” );
printf( “%s\n”, str );
}
试题7
void Test( void )
{
char *str = (char *) malloc( 100 );
strcpy( str, “hello” );
free( str );
… //省略的其它语句
}
试题 8
INT8U GetCPLDData(INT8U slaveaddress, INT8U offset)
{
int ret_val;
int i2c_fd;
INT8U ReadData = 0xff;
struct i2c_rdwr_ioctl_data *data;
data = (struct i2c_rdwr_ioctl_data *)malloc(sizeof(struct i2c_rdwr_ioctl_data));
data->nmsgs = 2;
data->msgs = (struct i2c_msg *)malloc(data->nmsgs * sizeof(struct i2c_msg));
data->msgs[0].buf = (unsigned char *)malloc(sizeof(unsigned char));
data->msgs[1].buf = (unsigned char *)malloc(sizeof(unsigned char));
data->msgs[0].addr = slaveaddress>>1;
data->msgs[0].flags = 0;
data->msgs[0].len = 1;
data->msgs[0].buf[0] = offset;
data->msgs[1].addr = 0x68>>1;//slave_address;
data->msgs[1].flags = I2C_M_RD;
data->msgs[1].len = 0x02;//read_length;
data->msgs[1].buf[0] = 0;
i2c_fd = open( "/dev/i2c8"/*i2c_dev*/, O_RDWR );
ret_val = ioctl(i2c_fd, I2C_RDWR, (unsigned int)data);
if(ret_val < 0)
{
printf("failed.\n\n");
}
/*for(i = 0; i < data->msgs[1].len; i++)
{
read_buff[i] = data->msgs[1].buf[i];
}*/
ReadData= data->msgs[1].buf[0];
return ReadData;
}
2.分别给出BOOL, int, float,指针变量 与“零值”比较的 if 语句(假设变量名为var)。
BOOL: If(var)&if(!var)
Int: If(var == 0)
Float: if()
指针: if(var ==NULL)
3.编写一个标准strcpy函数。
4.请说出static,const,volatile关键字尽可能多的作用。
5.请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1。
6.写一下C打开文本读写内容的程序代码;写一下Linux对打开设备读写的程序代码。
7.在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。
8.简单说明一下TCP和UDP的区别。另外,请写个TCP Socket的编码流程,包括服务器端以及客户端。(详细说明Socket API流程)
9.描述一下I2C,SPI,GPIO,以及有没有针对这些写过的Driver或者应用。
10.详细描述下嵌入式Linux启动流程。
11.简述一下Linux 进程间通信的几种方式,并写出每种通信方式的部分核心代码。如果有对其中哪种方式最了解,应用过,可以把之前经验举例说明。
12.Linux 开发中有什么方法调试进程收到段错误(Segment fault)导致进程挂掉的问题?如果之前有经验调试过此类问题,可以举例说明。
1、使用gdb调试
fsk