在C中每次从字符串中访问3个字符

在C中每次从字符串中访问3个字符,c,string,file,C,String,File,我正试图从文件中获取数据。文件的每一行都有整数数据。数据的长度每行都不同。当我使用fgets()访问每一行时,我得到的是字符串格式的行。我希望每次访问字符串的3个字符,直到出现换行符(\n) #包括 #包括 #包括 int main(int argc,char*argv[]) { int k,a; 字符大小[300]=“”; 字符buff[1026]; 文件*ip,*op; ip=fopen(argv[1],“r”); op=fopen(argv[2],“w+”); 如果(ip==NULL)

我正试图从文件中获取数据。文件的每一行都有整数数据。数据的长度每行都不同。当我使用
fgets()
访问每一行时,我得到的是字符串格式的行。我希望每次访问字符串的3个字符,直到出现换行符(
\n

#包括
#包括
#包括
int main(int argc,char*argv[])
{ 
int k,a;
字符大小[300]=“”;
字符buff[1026];
文件*ip,*op;
ip=fopen(argv[1],“r”);
op=fopen(argv[2],“w+”);
如果(ip==NULL)
{
perror(“发生错误\n”);
出口(1);
}
while(fgets(buff,sizeof(buff),fp))
{i=0;
int len=sizeof(buff)/sizeof(buff[0]);
现在buff将文件的第一行作为字符串。我想使用for循环每次获取字符串的3个字符,直到
\n
,然后我的程序将移动到下一行

我更喜欢Python,在Python中,我可以使用for循环并访问索引
[I:I+2]
。这将每次给我3个索引,不知道如何用C实现。也许我可以使用另一个字符串(
S1
)每次在
buff
上迭代3个字符,并将3个字符附加到新字符串中。然后我将进行验证,并为下一次迭代初始化字符串
S1
。看起来有点混乱

还有别的好办法吗?请帮忙

我更喜欢python,在python中,我可以通过使用for循环和访问索引[I:I+2]来实现这一点。这将每次给我3个索引,不知道如何在C中实现

给定索引
i
,您希望在C中访问
s[i]
s[i+1]
s[i+2]

要一次性复制所有3个,可以使用
memcpy
strncpy
提供
&s[i]
的起始地址

例如,如果不关心空字符,可以执行以下操作:

char d[3];
memcpy(d, &s[i], 3);

这意味着我必须使用一个新字符串,每次从buff复制3个索引到新字符串。我说的对吗?@conquisitor不一定,你也可以像我在第一行写的那样直接访问字符。这取决于你想做什么。@conquisitor这些东西不是“索引”。它们是字符。@Acorn,d将是指针,对吗?我可以做些什么,以便将其作为字符串,以便我需要在我的程序中进行一些验证吗?很抱歉这个问题,但在指针概念上确实很混乱。C的新手。
d
是一个数组,但是是的,当您将它传递给
memcpy
时,它的行为就像指向第一个元素的指针。(
&d[0]
)。我不确定“作为字符串”是什么意思。可能会问一个新问题!请完成示例代码(它没有被复制或格式正确)。我试图在开关量中使用buff[4]。但我得到一个错误,因为它不是整数。对此有何建议?
char d[3];
memcpy(d, &s[i], 3);