我的代码存在问题。当我运行它时,我的应用程序返回我并出错。
我的代码
#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”,lines [1] [1]); 当他在行中有勇气时,他会返回错误thx
答案 0 :(得分:1)
lines [i-6][j] = "bonjour";
实际上将指针指向字符串&#34; bonjour&#34;进入缓冲区。您可能希望使用strcpy()函数将字符串实际复制到缓冲区中。在这种特殊情况下,您将使用
strcpy(dest, src);
在这种情况下是
strcpy(lines[i-6], "bonjour"]
这是第一个维度指向包含字符串的第二个维度开头的维度。在这种情况下,我= = 7所以i-6 == 1。
如果你想要bj的bonjour进入行[1] [1],那么你需要指定&amp;(行[1] [1]),它指向缓冲区中该位置的地址。
printf("%s", lines [1][1]);
将字符串复制到缓冲区后,您希望将指针传递给缓冲区中字符串的开头。既然您已经使用了strcpy(),那么您可以打印整个字符串。
printf("%s", lines[1]);
注意,行[1] [1]包含bonjour的o,因为C使用基于0的索引,除非你使strcpy()的dest参数指向行[1]的第二个元素。