2016-08-16 112 views
0
void addStudent(char* lastName, 
       char* firstName, 
       char* studentId, 
       smartresponse_classV1_t* signInClass) 
{ 

    sr_student_t *student = sr_student_create(
     lastName, 
     sizeof lastName + 1, 
     firstName, 
     sizeof firstName + 1, 
     studentId, 
     sizeof studentId); 

    sr_class_addstudent(signInClass, student); 

    sr_student_release(student); 
} 

// add student 
char *firstName = "first"; 
char *lastName = "last"; 
char *studentId = "1"; 
char *id =""; 
int i; 

for (i = 1; i < 10; i++) 
{ 
    id = _itoa(i, studentId, 10); 

    addStudent(lastName, firstName, id, signInClass); 
} 

我想将int转换为字符串,以便我可以为新学生分配新ID。 我不知道我在做什么错误,因为我从python调用测试dll函数,并以某种方式它给了我一个错误windowserror异常访问冲突写作.....在打印dll.test() 是否有问题在for循环中,当我调用该函数并将id分配给它时?在循环中添加学生

def test(x): 
    ''' Just runs the main test. 
    >>> test(1) 
    1 
    ''' 

    if x == 1: 
     print dll.test() 

if __name__ == '__main__': 
    ''' Testing the library. ''' 
    import doctest 
    if doctest.testmod()[0] > 0: 
     raise Exception('Unit tests have errors') 
    print 'Unit tests OK' 

回答

0

您分配较少的字节到你的ID和studentId指针

char *id =""; //1 byte assigned 0x00 at string "" end 
char *studentId ="1"; // 2 bytes assigned but in code you will need 3 ("10"+null) 

您的代码应该是这样的:

void addStudent(char* lastName, char* firstName, char* studentId, smartresponse_classV1_t* signInClass){ 
      sr_student_t *student = sr_student_create(lastName, sizeof lastName + 1, firstName, sizeof firstName + 1, studentId, sizeof studentId); 
      sr_class_addstudent(signInClass, student); 
      sr_student_release(student); 
    } 
char *firstName = "first"; 
char *lastName = "last"; 
char *studentId = "00"; 
char *id ="00"; 
int i; 

for (i = 1; i < 10; i++){ 
    id = _itoa(i, studentId, 10); 
    addStudent(lastName, firstName, id, signInClass); 
} 
+0

非常感谢您的回复,但问题仍然存在我认为在调用dll测试函数时存在一个问题。但它会运行,如果我从循环中删除itoa调用和id并运行它只有学生id =“1”。请帮助我 – sanchaz

+0

如果您删除了'id = _itoa(i,studentId,10);'并且它运行。你应该在那里搜索你的问题。 “访问冲突”意味着你试图写一些你不允许的地方。 – Sahee