gpt4 book ai didi

c++ - 结构中的指针

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:01 25 4
gpt4 key购买 nike

先说说我的问题:

我写了一个基于这个结构的程序..

typedef struct{ 
char firstname [40];
char lastname [40];
char address [100];
char phone[11];
}contact;

将要求用户输入,然后将其写入文件。除了当我写文件时,它写的是名字,其余的 40 个字符,所以所有的东西都被隔开..

我的一位同事建议创建一个指针结构,但我完全不熟悉这个概念。到目前为止,我用这个来替换上面的结构:

typedef struct{ 
char* firstname;
char lastname [40];
char address [100];
char phone[11];
}contact;

在这种情况下,我现在只处理名字。我看过创建单独数组的例子

char comm[100];

fgets(entry.firstname, 40, stdin);
entry.firstname = new char[strlen(comm)];

或类似的影响,但这让我很不舒服。我想要的是让这个人输入一个条目,并且字段的大小根据用户输入的大小增长和缩小。任何修复将不胜感激!

很抱歉把这个漏掉了:/:

pFile = fopen("C:\\contacts.txt", "r+");

if(!pFile){
puts("File could not be open.");
return 1;
}

fwrite(&entry,1,sizeof(entry),pFile);

最佳答案

问题是您只是将整个 contact 结构转储到一个文件中。您要做的是只写出用户输入的字符。幸运的是,这很容易。首先,让我们打印出名字:

fprintf(pFile, "%s\n", entry.firstname);

如果您使用的是 C++,则应该使用 std::string 而不是字符数组。你的结构现在看起来像

typedef struct{ 
std::string firstname;
std::string lastname;
std::string address;
std::string phone;
}contact;

并且您可以使用 fstream 写入文件

std::ofstream outfile("C:\\contacts.txt");
outfile << contact.firstname << std::endl
<< contact.lastname << std::endl
<< contact.address << std::endl
<< contact.phone << std::endl;
outfile.close();

关于c++ - 结构中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8480494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com