gpt4 book ai didi

c++ - 用strtok拼接cstrings,只适用于循环的第一次执行

转载 作者:行者123 更新时间:2023-11-28 03:23:13 24 4
gpt4 key购买 nike

我正在尝试使用 strtok 将读入 cstring 的行拼接到单个字符串中。是的,我知道这可以用字符串对象更容易地完成,但我不允许使用它们。当这段代码执行时,它在第一行完美运行,然后它继续只在循环的每次迭代的同一行上运行。如 cout << line << endl; 所示,该文件已成功读入“line”字符数组。但是 strtok 和第二个 while 循环继续拆分每次读取的第一行。每行包含一个 first_name last_name ID 和六个等级。我想我会重写它并让 getline 在空白处定界并读入单独的字符串,但是有谁知道为什么 strtok 只在循环的每个连续迭代中拼接第一个字符串?

这是一段代码,假设所有变量都在别处正确声明

 while(!fin.eof())
{//while open
fin.getline(line, 40, '\n');
cout << line << endl;
ptr = strtok (line, " ");

while(ptr != NULL)
{
if(c==0)
sprintf(firstname, "%s", ptr);
if(c==1)
sprintf(lastname, "%s", ptr);
if(c==2)
sprintf(id, "%s", ptr);
if(c==3)
sprintf(grade1, "%s", ptr);
if(c==4)
sprintf(grade2, "%s", ptr);
if(c==5)
sprintf(grade3, "%s", ptr);
if(c==6)
sprintf(grade4, "%s", ptr);
if(c==7)
sprintf(grade5, "%s", ptr);
if(c==8)
sprintf(grade6, "%s", ptr);
ptr = strtok (NULL, " ");
if(ptr == NULL)
break;
c++;
}
}

最佳答案

离开内部循环后,您不会重置变量 c

关于c++ - 用strtok拼接cstrings,只适用于循环的第一次执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14848987/

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