gpt4 book ai didi

c - 如何在读取重定向文件的特定行时使程序结束

转载 作者:行者123 更新时间:2023-11-30 17:37:49 25 4
gpt4 key购买 nike

好的,我要解释一下我的程序。
它需要一个这样设置的文本文件:成对出现,第一行是实验的标题,第二行是由空格分隔的 10 个数字。它将第一行对保存在 *experiments 中,将第二行对保存在 data 中。最后一行是 *** END *** 这是它应该结束的内容。

由于某种原因*** END ***没有结束程序。我有什么办法可以解决这个问题吗?我假设这是因为 fgets 给出了 str 空格(总共 99 个字符),因此引号中的字符串永远不会等于 str?

谢谢。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
int var;
int i=0,j,k;
char seps[] = " ";
char *experiments[20];
int data[10][20];
char str[100]; // make sure that this size is enough to hold the single line
char *ptr, *token;
int no_line=1;


while(fgets(str,100,stdin) != NULL && strcmp(str,"*** END ***"))
{
if(no_line % 2 == 0)
{
k=0;
token = strtok (str, seps);
while (token != NULL)
{
sscanf (token, "%d", &var);
data[i][k++] = var;
token = strtok (NULL, seps);
}
i++;
/*read integer values from the string "str" using sscanf, sscanf can be called in a loop with %d untill it fails */
}
else
{
ptr = strdup(str);
experiments[i] = ptr;
/*strore string in your variable "experiments" , before copying allocate a memory for the each entry */
}
no_line++;
}
for(j=0;j<i;j++)
{
printf("%s",experiments[j]);
for(k=0;k<10;k++)
{
printf("%d ",data[j][k]);
}
printf("\n");
}

}

最佳答案

您在这里声明i ...

int i,j,k;

...并在这里使用它...

data[i][k++] = var;

你没有在任何地方初始化i。另外,为什么data需要是一个二维数组?它不能只是一个一维数组吗?

int data[10];

...

data[k++] = var;

关于c - 如何在读取重定向文件的特定行时使程序结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22277268/

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