所以输入文件如下所示:
Adam Zeller 45231 78 86 91 64 90 76
Barbara Young 274253 88 77 91 66 82 93
Carl Wilson 11223 87 77 76 78 77 82
SIZE = 256;
我使用getline
函数将第一行放入char lineOne[SIZE]
,其他行放在lineTwo[SIZE]
和lineThree[SIZE]
中但我需要能够修改最后一行每行5个数字,如重新排序等。我该怎么做呢?我不认为我可以将整个char数组转换为int,因为它不仅有行中的整数而且我真的不知道该怎么做,我被卡住了。
此外,我无法使用字符串库。
答案 0 :(得分:1)
首先,您将使用strtok()来“标记”您的输入行。这意味着它会将其拆分为块。当然,你会把它分开。
只要您的数据遵循上面的模式,就可以跳过前两个,然后使用atoi()将ASCII转换为整数。
将这些整数存储在数组中,您可以随意使用它们。
获取所需值的粗略伪代码可能如下所示:
char *ptr;
for each line
{
ptr=strtok(lineOne," "); // do the initial strtok with a pointer to your string.
//At this point ptr points to the first name
for(number of things in the line using an index variable)
{
ptr=strtok(NULL," "); // at this point ptr points to the last name
if(index==0)
{
continue; //causes the for loop to skip the rest and go to the next iteration
}
else
{
ptr=strtok(NULL," "); // at this point ptr points to one of the integer values,
//index=1 being the first one.... (careful not to get off by one here)
int value=atoi(ptr)
/// stuff the value into your array... etc...
storageArray[index-1]=value; /// or something like this
.....
}
}
}
答案 1 :(得分:0)
正如其他答案之一所示,我会使用strtok()
来标记输入,但我还会实现一个简单的结构来保存每条记录。然后使用do-while循环读取每一行,将该行拆分为标记,并将其读入记录。