【发布时间】:2016-12-03 09:17:06
【问题描述】:
我用这段代码打印了一些字符串,但它没有打印任何东西。
有什么问题?
char* getNotFilledEncryptionParams(void)
{
char* nofilledStr;
char tmp[3];
const char * arr[]= {" P,"," Q,"," A,"," B,"," C,"," R,"," S0,","S1,","S2,","F1,","G1"};
for(i=0;i<11;i++)
{
if(filledParams[i] == 0)
{
strcpy(tmp,arr[i]);
strcat(nofilledStr,tmp);
}
}
return nofilledStr;
}
用法:
int main(void){
char *remaining;
remaining = getNotFilledEncryptionParams();
printf("\r\n Remaining item:%s",remaining);
}
我认为问题出在const char * arr[] 并且我更改了它,但问题仍然存在。
【问题讨论】:
-
一方面,当您使用 strcpy() 时,tmp[3] 应该至少有 4 个字符宽以容纳 NULL。什么是填充参数?
-
那是一个整数数组。 @clarasoft-它
-
通过这个
tmp变量拖动字符串是没有用的。为结果字符串分配空间后,您可以直接将arr[i]附加到结果字符串中。 -
@clarasoft-it:
NULL是一个空指针常量。你的意思是空字符,'\0'。 -
关于标题,我很确定这与任何编辑器无关。
标签: c printf malloc strcpy keil