C字符串文字处理

use*_*944 3 c string segmentation-fault

程序崩溃的以下代码有什么问题 - 给出分段错误.我正在使用gcc.

uint8_t result = 1      

InsertRow("Name","Details of work",result);     

void InsertRow(char *Name, char *Description,uint8_t Result)   
{  
   char Buffer[500];  

   if(Result==1)   
      sprintf(Buffer,"<tr><td>%s </td> <td> %s </td> <td>  %s </td></tr>",Name,Description,Result);   
} 
Run Code Online (Sandbox Code Playgroud)

unw*_*ind 7

您正在使用%s格式说明符作为类型的参数uint8_t,这应该是%u,您应该将值转换unsigned int为匹配.这样您就不必关心确切的类型并调整格式化程序(如评论者的建议).

此外,我们很难知道缓冲区足够大,当然.如果你拥有它,你可以使用它snprinf()来避免这种情况.