【发布时间】:2022-10-23 16:36:57
【问题描述】:
这是我的代码:
#include <stdio.h>
typedef struct
{
char name[100];
char number[100];
} contact_t;
void empty_array(char *line)
{
for (int j = 0; line[j] != '\0'; j++)
{
line[j] = '\0';
}
}
void read_text(contact_t *contact)
{
int c, cnt = 0;
int i = 0;
char line[100];
do
{
c = getchar();
if ( (c == '\n') || (c == EOF))
{
if( cnt % 2 == 0)
{
for(int j = 0; line[j] != '\0'; j++)
contact -> name[j] = line[j];
}
else
{
for(int j = 0; line[j] != '\0'; j++)
contact -> number[j] = line[j];
}
empty_array(line);
i = 0;
cnt++;
}
line [i] = c;
i++;
} while (c != EOF);
}
int main()
{
contact_t contact = {"x", "0"};
int *j_ptr;
read_text(&contact);
printf("%s", contact.name);
printf("%s", contact.number);
return 0;
}
我正在从标准输入中读取一个文本文件(6 行,名称和编号,名称和编号...)。然后我将该文本文件中的每隔一行(从第一行开始)分配给结构contact.name,其余的分配给contact.number。所以我有几个 3 联系结构。我设法只将最后一个传递给 main,因为我不知道如何访问 int cnt 并再次创建一个 for 循环。
这是最后的印刷品给我的:
约翰·格林 254454556
更新: 很抱歉因为我匆忙写这个问题而不够清楚。这段代码是学校项目的一部分,我们不允许使用动态分配的内存或使用 fscanf、fopen、qsort、lsearch、bsearch 和 hsearch 等。基本上,我只想使用指向数组行索引的指针,然后在 main 函数中再次使用 for 循环将所有结构从函数 read_text 传递到程序的 main 函数。
【问题讨论】:
-
minimal reproducible example 会有所帮助。你描述你的代码做什么,没有。
-
边注:风格上
contact -> name-->contact->name和line [i]-->line[i]