int main(){
char *c=(char*)malloc(4*sizeof(char));
*c='a';
c++;
*c='b';
c++;
*c='c';
c++;
*c='\0';
printf("%s",c);
return 0;
}
使用此代码我可以打印每个字符(例如 printf("%c",*(--c));
),但是当我尝试使用 printf("%s",c);
打印整个字符串时该程序什么都不打印!为什么会这样?
最佳答案
指针已移动。所以它现在指向最后一个字符“\0”。所以,什么都不打印。将指针保存在另一个变量中并尝试使用它进行打印。然后它将正确打印。
尝试如下:
int main()
{
char *p;
char *c=(char*)malloc(4*sizeof(char));
p = c;
*c='a';
c++;
*c='b';
c++;
*c='c';
c++;
*c='\0';
printf("%s",p);
free(p);
return 0;
}
关于c - 用字符填充的动态分配的字符串导致空字符串 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39142074/