0

我正在尝试将从文件读取的字符存储到字符数组中,但它最终也会存储每个后续字符。对于这段代码,我创建了一个结构和一个函数来初始化数组。

来自“结构.h”

typedef struct (
    int size;
    char *elem;
    } cvector;

来自“实用程序.c”

cvector make_cvector (int size)
    {   cvector temp;
        temp.size = size;
        temp.elem = calloc(size, sizeof(char));
        return temp;
    }

然后我试图读取一个文本文件,上面写着:“ab c”

在正文中,我说:(其中 nPtr 是打开文件的指针)

cvector NodeID;
NodeID = make_cvector(3);
for(i=0;i<3;i++){
        fscanf(nPtr,"%s", &NodeID.elem[i]);
        printf("%s ",&NodeID.elem[i]);
}

这导致“ abc ” 但是在这个循环之后,我输入了另一个循环:

for(i=0;i<3;i++)
        printf("%s ", &NodeID.elem[i]);

导致“abc bc c”实际上我想将“a”“b”和“c”分开存储。我的初始化或指针可能有问题,但我一直试图在线阅读无济于事。错误可能在哪里?谢谢!

4

1 回答 1

2

当您真正想要做的是打印单个字符时,您正在打印一个字符串。代替

printf("%s ",&NodeID.elem[i]);

经过

printf("%c ",NodeID.elem[i]);

它应该可以工作。

于 2013-10-07T03:26:48.377 回答