gpt4 book ai didi

c - 从文件中读取行并将每个单词存储到数组中(C 语言)

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

我正在尝试用 C 语言创建一个函数,该函数读取第一行表单文件并将每个单词存储到字符串数组中,然后返回数组或打印它(我使用了 strtok())。我已经编写了代码,但是当我测试它时,出现错误:“段错误”,我不知道这意味着什么。有什么帮助吗???我看到这个问题Segmentation fault with array of strings C我觉得很相似,但我还是不明白。这是我的代码:

从文件读取数据并将其存储到数组中的函数函数位于文件:methodes.c

void lireFichier (char *file)
{
int i = 0;
int nbElement = 4;
char ** tab;
char line [1000];
char *str[1000];
const char s[2] = " ";
char *token;
FILE *myFile;

myFile = fopen(file, "r");
if(!myFile)
{
printf("could not open file");
} else
{
printf("file opened\n");
//while(fgets(line,sizeof line,myFile)!= NULL)

//get the fisrt line
fgets(line,sizeof line,myFile);

//fprintf(stdout,"%s",line);
//get the fisrt word
token = strtok(line, s);

for(i =0; (i< nbElement) && (token != NULL); i++)
{
int len = strlen(token);
tab[i] = malloc(len);
strncpy(tab[i], token, len-1);
token = strtok(NULL, s);
//printf( "%s\n", tab[i]);
}
}
fclose(myFile);
}

这是 main.c//我将文件作为参数传递(在 argv 中)

#include <stdio.h>
#include <stdlib.h>
#include "methodes.h"


int main(int argc, char *argv[])
{
int result = 1;
if(argc < 2)
{
printf("Erreur dans les arguments\n");
} else
{
int idx;
for (idx = 0; idx < argc; idx++)
{
printf("parameter %d value is %s\n", idx, argv[idx]);
}

lireFichier(argv[1]);

}
return 0;
}

这是文件的示例:methodes.txt

afficher tableau
partager elements roles
nommer type profession
fin

这是我的输出:

file opened
Erreur de segmentation

注意:输出是法语,因此该消息表示段错误谢谢您,并对所有细节表示抱歉,我只是想确保人们理解我的意思。

最佳答案

 char ** tab;

是一个未初始化的指针。您需要的是一个指针数组。

char *tab[10];  

使用您认为合适的大小而不是 10,并调整代码以包括边界检查。

关于c - 从文件中读取行并将每个单词存储到数组中(C 语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33324115/

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