我有一个代码
#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
任何人都可以帮我解决这个新线问题,这样它就会显示新线,而不是奇怪的符号。或者也许我可以改变连接上述值的方法,以便正确呈现新行,而不显示奇怪的符号?
答案 0 :(得分:0)
代码看起来没问题,除非你缺少一些标题这一非常重要的事实。
strlen
位于<string.h>
,malloc
位于<stdlib.h>
。
包含这些内容,打开编译器警告(GCC为-Wall
),将您的main
签名更改为:
int main(void) { }
实际上从它返回一个int(或编译为C99,GCC为std=c99
),问题应该消失。