我是C编程的新手,想要编写一个读取一行整数的程序,然后为每个整数创建一个struct的成员。这是一个简化的例子:
让我们说这就是这条线:* 23 4 12 56 78 *
,结构看起来像这样:
struct structure
{
int index;
int number;
};
第一个成员应如下所示:
struct structure member0;
member0.index = 0;
member0.number = 23;
但我希望程序能够读取任意长度的行,所以我想要一个循环,每当读取一个整数时,使用读取的数字创建一个新成员,并将名称和索引设置为< em>上一个索引+ 1 我想知道是否以及如何做到这一点。
答案 0 :(得分:2)
可以做到
fgets()
阅读strtok()
atoi()
或strtol()
i
,您需要为每个令牌递增,并应在每次fgets()
调用后重置答案 1 :(得分:0)
使用strtol()
,你需要沿着这条线的东西..
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#define MAX_SIZE 100
typedef struct _TMember
{
int index;
int number;
} TMember;
int main()
{
TMember arr[MAX_SIZE] = {};
char szNumbers[] = "10 20 30 40 50";
char *pEnd;
long int li;
unsigned short index = 0;
pEnd = szNumbers;
for( ; ; )
{
char *tmp = pEnd;
li = strtol( pEnd, &pEnd, 10 );
if( tmp == pEnd )
{
break;
}
else
{
arr[index].index = index;
arr[index].number = li;
index++;
}
}
for( int i = 0; i < index; i++ )
{
printf( "Member %d, idx = %d, number = %d\n", i, arr[i].index, arr[i].number );
}
return 0;
}