我找不到任何问题的解决方案,我认为这很容易,但不适合我。
我的第二个strcpy
不起作用,如何将word2
放入var2
?
/* struct */
struct StructName {
char var1[15];
unsigned char var2;
};
/*main*/
int main(void) {
char *word1;
char *word2;
struct StructName Name;
char line[] = "abc=12 xxxxxxxxx";
word1 = strtok(line, " ");
word1 = strtok(word1, "=");
word2 = strtok(NULL, "=");
if ((strcmp(word1, "abc"))==0) {
strcpy(Name.var1, word1);
printf("%s", Name.var1);
strcpy(Name.var2,(unsigned char)word2);
printf("%d", Name.var2);
}
return 0;
}
答案 0 :(得分:1)
您是否听说过stdlib.h中的函数int atoi(const char*)
?尝试使用它将您的字符串转换为int,然后将该int转换为unsigned char。
编辑:只有在您尝试从line
中提取数字12时才这样做,这是我认为您正在尝试做的事情。
答案 1 :(得分:0)
问题不明确,但是如果要将word2转换为Name.var2,可以按照以下步骤操作。 首先,您可以将char指针转换为int,然后将整数的地址作为unsigned char指针。
/*main*/
int main(void) {
char *word1;
char *word2;
int number = 0;
struct StructName Name;
char line[] = "abc=12 xxxxxxxxx";
word1 = strtok(line, " ");
word1 = strtok(word1, "=");
word2 = strtok(NULL, "=");
if ((strcmp(word1, "abc"))==0) {
strcpy(Name.var1, word1);
printf("%s", Name.var1);
number = atoi(word2);
Name.var2 = *(unsigned char*)&number;
}
return 0;
}
为atoi函数包含stdlib库。无符号字符大小和整数大小不匹配。因此,您的输入应与字符大小兼容。
答案 2 :(得分:0)
是的,我的目标是将号码12复制到unsigned char中。 功能atoi效果很好, 我试试这个看似有效。
if ((strcmp(word1, "abc"))==0) {
strcpy(Name.var1, word1);
printf("%s", Name.var1);
Name.var2=(unsigned char)atoi(word2);
printf("%d", Name.var2);
}
他们与GürtaçKadem的主张有何不同?
再次感谢! Brodbeni
答案 3 :(得分:-1)
奥拉夫认为将指针放入角色是一个坏主意,好吧,如果它有用,这将是一个非常好的主意 - 它会节省大量内存。
不幸的是,它不会起作用。它的点(呃)较少,并且在任何情况下都不适合,除非你的CPU只有256字节或更少的RAM :(