gpt4 book ai didi

c - 为什么 multi dim array içn c 返回错误

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

我的代码有问题。我的应用程序在运行时返回错误。

我的代码

    #include <errno.h>
#include <sys/types.h>
#undef _POSIX_SOURCE
#include <stdio.h>
#include "ini.h"

void readIniFile()
{
int i = 0;
int j = 0;
char lines [255][255];
char **tokens;
static const char filename[] = "../../conf/incoming_files_description.ini";
FILE *file = fopen( filename, "r" );
if ( file != NULL )
{
char line[256];
while (fgets(line, sizeof line, file) != NULL)
{
i++;
if(i>6) //afficher a partir de la ligne 7
{
printf("\n");
tokens = str_split(line, ';');
for (j = 0; j<5; j++ )
{
lines [i-6][j] = "bonjour";
printf("%s", lines [1][1]);
printf("test: %s\n", *(tokens + j));
free(*(tokens + j));
}
}
}

fclose (file);
}
else
{
perror(filename);
}
}

我在这行遇到问题 printf("%s", 行 [1][1]);当他在行中表现出勇气时,他会返回错误 thx

最佳答案

lines [i-6][j] = "bonjour";

实际上是将指向字符串“bonjour”的指针放入缓冲区。您可能想要使用 strcpy() 函数将字符串实际复制到缓冲区中。因此,在这种特殊情况下,您将使用

strcpy(dest, src);

在本例中是

strcpy(lines[i-6], "bonjour"]

这是行的第一个维度指向将包含字符串的第二个维度的开始。在本例中,i == 7,因此 i-6 == 1。

如果您希望 bonjour 的 b 进入lines[1][1],那么您需要指定 &(lines[1][1]) ,它指向缓冲区中该位置的地址。

printf("%s", lines [1][1]);

将字符串复制到缓冲区后,您希望将指针传递到缓冲区中字符串的开头。由于您会使用 strcpy(),因此您可以打印整个字符串。

printf("%s", lines[1]);

请注意,lines[1][1] 包含 bonjour 的 o,因为 C 使用基于 0 的索引,除非您使 strcpy() 的 dest 参数指向lines[1] 的第二个元素。

关于c - 为什么 multi dim array içn c 返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22289620/

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