因为标题说我有一个指向字符串的指针,但它不会让我打印出来而不在最后打印换行符。
这就是我所拥有的:
char *rcv_message = malloc(msg_len); /* where msg_len = 5, because input is "hello" we are not supposed to worry about the null terminator */
printf("%s", rcv_message);
如果没有新行,打印行不会打印任何内容。终端只是空白。
但是当我在最后添加一个新行时,例如:
printf("%s\n", rcv_message);
打印出消息。
出了什么问题?
答案 0 :(得分:4)
没有什么是错的。默认情况下输出为“行缓冲”,这意味着在您编写换行符之前输出将不会发送到终端,或者使用fflush()
强制输出,或者(在许多系统上)在标准上启动输入操作输入
顺便说一句,如果你不打算担心null终止符,那么你需要限制打印:
printf("%.5s", rcv_message);
但是你应该仔细考虑它。在分配的字符串中添加null会在数组的边界外写入。这是未定义的行为,未定义的行为是无条件的 - 不惜一切代价避免。