C 编程,char 指针数组

标签 c arrays pointers

我正在尝试创建一个程序,从文本文件中取出字符串,并将它们存储到数组中。

假设从文本文件中我得到分隔符:“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/

相关文章:

android - 如何在 Android 上使用 framebuffer 进行绘图?

javascript - 如何在 lodash 中使用数组过滤条件来对抗对象?

c - 使用Python返回指向已经存在的内存地址的指针

c++ - vector 成员被重置且不可访问

C - 安全地解析和发送大量无休止的流中的许多字符串

c++ - 对于具有 UIAccess ="true"的进程,CreateProcessAsUser 失败并显示 ERROR_ELEVATION_REQUIRED

c - MCP3021字节处理

javascript - 按 JavaScript 数组中的值查找

c++ - 使用列边界导航数组

C char指针,char指针复制char指针。是否可以认为是在内存中自动/动态创建空间?