C结构;克服将字符串传递给 char
C structure; overcoming passing a string to a char
我正在尝试打印一个简单的结构,但它不起作用,因为我正在尝试将一个字符串传递给一个字符(我知道这是非法的)。但是我不知道如何克服这个问题。我知道有一种方法可以使用 strcpy 而没有 strcpy,我该如何更正这个问题?我搜索了论坛并发现了类似的问题,但无法将它们应用到我的问题中。
#include <stdio.h>
struct article
{
int number;
int quantity;
char description[21];
};
void print(struct article *p)
{
printf("Article Number: %d\nQuantity: %d\nDescription: %s", p->number, p->quantity, p->description);
}
int main()
{
struct article *mydata;
mydata->number = 333;
mydata->quantity = 465;
mydata->description = "Wall Street Journal\n";
print(mydata);
return 0;
}
首先,您要声明一个指向 struct article
的指针。您需要为该指针分配内存。它不会自动为您分配到堆栈上。使用 malloc
为堆分配动态内存。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
struct article *mydata = malloc(sizeof(struct article));
if(article == NULL) {
exit(1);
}
mydata->number = 333;
mydata->quantity = 465;
char *description = "Wall Street Journal\n";
size_t len = strlen(description);
memcpy(mydata->description, description, len);
mydata->description[len] = '[=10=]';
print(mydata);
free(mydata);
return 0;
}
struct article mydata = {
333,
465,
"Wall Street Journal\n"
};
print(&mydata);
struct article mydata;
mydata.number = 333;
mydata.quantity = 465;
strcpy(mydata.description, "Wall Street Journal\n");
print(&mydata);
你也可以这样做。但是,如果您有可以为您完成这项工作的功能,为什么还需要其他方法。
char mydescription[]="Wall Street Journal\n";
int count =0 ;
for( count =0 ; mydescription[count] != '[=10=]' ; count++)
{
mydata->description[count] = mydescription[count] ;
}
我正在尝试打印一个简单的结构,但它不起作用,因为我正在尝试将一个字符串传递给一个字符(我知道这是非法的)。但是我不知道如何克服这个问题。我知道有一种方法可以使用 strcpy 而没有 strcpy,我该如何更正这个问题?我搜索了论坛并发现了类似的问题,但无法将它们应用到我的问题中。
#include <stdio.h>
struct article
{
int number;
int quantity;
char description[21];
};
void print(struct article *p)
{
printf("Article Number: %d\nQuantity: %d\nDescription: %s", p->number, p->quantity, p->description);
}
int main()
{
struct article *mydata;
mydata->number = 333;
mydata->quantity = 465;
mydata->description = "Wall Street Journal\n";
print(mydata);
return 0;
}
首先,您要声明一个指向 struct article
的指针。您需要为该指针分配内存。它不会自动为您分配到堆栈上。使用 malloc
为堆分配动态内存。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
struct article *mydata = malloc(sizeof(struct article));
if(article == NULL) {
exit(1);
}
mydata->number = 333;
mydata->quantity = 465;
char *description = "Wall Street Journal\n";
size_t len = strlen(description);
memcpy(mydata->description, description, len);
mydata->description[len] = '[=10=]';
print(mydata);
free(mydata);
return 0;
}
struct article mydata = {
333,
465,
"Wall Street Journal\n"
};
print(&mydata);
struct article mydata;
mydata.number = 333;
mydata.quantity = 465;
strcpy(mydata.description, "Wall Street Journal\n");
print(&mydata);
你也可以这样做。但是,如果您有可以为您完成这项工作的功能,为什么还需要其他方法。
char mydescription[]="Wall Street Journal\n";
int count =0 ;
for( count =0 ; mydescription[count] != '[=10=]' ; count++)
{
mydata->description[count] = mydescription[count] ;
}