newline(“\ n”)结果的print concat值在C中显示为<! - ? - >符号

时间:2011-10-19 11:24:14

标签: c

我有一个代码

#include <stdio.h>

int main()
{

    char *price_c = "200";
    char *s_att = "test ";

    int satt=strlen(s_att);
    int price_len = strlen(price_c);

    int send_attach_len = price_len+satt;

    size_t length = send_attach_len +2;
    char *concat = malloc(sizeof(char) *length);

    snprintf(concat, length, "%s%s%s", s_att, price_c, "\n");
    printf("value of concat is %s", concat);
}

当我看到打印的值时,我只有test 200,但在其他一些场合,我有test 200 < ? > < ? >是一个奇怪的符号,不知何故新行无法识别。 但这很奇怪,因为并不是所有的时间都出现了这个奇怪的符号。 它随机出现了。我正在使用ubuntu 10.04

任何人都可以帮我解决这个新线问题,这样它就会显示新线,而不是奇怪的符号。或者也许我可以改变连接上述值的方法,以便正确呈现新行,而不显示奇怪的符号?

1 个答案:

答案 0 :(得分:0)

代码看起来没问题,除非你缺少一些标题这一非常重要的事实。

strlen位于<string.h>malloc位于<stdlib.h>

包含这些内容,打开编译器警告(GCC为-Wall),将您的main签名更改为:

int main(void) { }

实际上从它返回一个int(或编译为C99,GCC为std=c99),问题应该消失。