我正在尝试创建一个程序,从文本文件中取出字符串,并将它们存储到数组中。
假设从文本文件中我得到分隔符:“one”,“dfs”,“w342”
获得这些分隔符后,我想创建一个与找到的标记数量相同大小的数组,并且数组中的元素必须是指向“one”、“dfs”、“w342”的字符指针。
int lexer(FILE* file){
char line[50];
char* delim;
char* tokenArray[100];
int i = 0;
while(fgets(line,sizeof(line),file)){
printf("%s\n", line);
if(is_empty(line) == 1)
continue;
delim = strtok(line," ");
if(delim == NULL)
printf("%s\n", "ERROR");
while(delim != NULL){
if(delim[0] == '\n'){
//rintf("%s\n", "olala");
break;
}
tokenArray[i] = strdup(delim);
printf("Token IN array: %s\n", tokenArray[i]);
i= i+ 1;
delim = strtok(NULL, " ");
}
}
printf("%s\n", tokenArray[6]);
fclose(file);
return 0;
现在我正在获取分隔符并将它们存储到一个数组中,但我认为我做得不对,因为我没有存储指针。我还想将此 tokenArray
发送到不同的函数中。我应该怎么办?
最佳答案
我通过非常小的修改测试了您的代码,您可以将 tokenArray 传递给函数:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void test(char *tokenArray[]) {
printf("Test %s\n", tokenArray[2]);
}
int main(void) {
char line[50];
char *delim;
char *tokenArray[100];
int i = 0;
FILE* file;
file = fopen("data.txt","r"); // read mode
while (fgets(line, sizeof(line), file)) {
printf("%s\n", line);
delim = strtok(line, " ");
if (delim == NULL)
printf("%s\n", "ERROR");
while (delim != NULL) {
if (delim[0] == '\n') {
//rintf("%s\n", "olala");
break;
}
tokenArray[i] = strdup(delim);
printf("Token IN array: %s\n", tokenArray[i]);
i = i + 1;
delim = strtok(NULL, " ");
}
}
printf("%s\n", tokenArray[2]);
test(tokenArray);
fclose(file);
return 0;
}
文件data.txt
one dfs w342
输出
one dfs w342
Token IN array: one
Token IN array: dfs
Token IN array: w342
w342
Test w342
关于C 编程,char 指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38167208/