我看到几个关于它的线索,但仍然不知道如何修复该错误。事情是:
char *data;
char chat;
snprintf(chat,"%d",getc(file));//error here
printf("\Variable %c",chat); // here is still valid
strncpy(data, chat, SHM_SIZE); //error here
请帮助:)
sprintf - 给出错误(int到char转换); atoi / itoa - 不工作:/
编辑:@iharob 谢谢!我还有问题......
strncpy(data, "a", SHM_SIZE); //is totally working
但是
char chat[SHM_SIZE];
snprintf(chat, sizeof chat, "%d",getc(file));
printf("Variable %c\n", chat);//showing nothing or some weird signs
很奇怪,因为
printf("Character : %c",getc(file)); //shows everything ok
答案 0 :(得分:0)
snprintf的第一个参数是什么? 你在路过什么?
它们是一样的吗?
如果编译器允许你调用函数,你认为snprintf函数到底会怎么做?
strncpy同样糟糕。第一个参数是一个未初始化的指针,因此会崩溃。第二个参数是char而不是指针,因此会崩溃。不知道SHM_SIZE是什么,但现在我担心最坏的情况。
这看起来好像是在不知道他们在做什么的情况下,从各种来源复制点点滴滴。
答案 1 :(得分:0)
可以通过以下
完成char *data;
char chat[SHM_SIZE];
/* snprintf signature is snprintf(char *str, size_t size, const char *format, ...); */
/* read the manual please */
snprintf(chat, sizeof chat, "%d",g etc(file));
printf("Variable %s\n", chat); // here is still valid
length = strlen(chat);
/* you need to allocate space for the destination */
data = malloc(1 + length); /* 1+ for the terminating null byte which strlen does not count */
if (data != NULL) /* check that malloc succeeded. */
strncpy(data, chat, length); //error here
请阅读snprintf手册