如何将指针指向的textf的内容复制到char数组(即指针->;char数组)

如何将指针指向的textf的内容复制到char数组(即指针->;char数组),c,arrays,pointers,char,C,Arrays,Pointers,Char,我正在读取一个文件,由于malloc,它将文本文件的内容保存到*buffer。但是,我希望将文件的内容传输到char数组。我怎样才能做到这一点 以下是我目前的代码: #define LENGTH_OF_INPUT 49 FILE *FP = fopen("InputString.txt", "r"); char *buffer; char InputString; fseek(FP, 0L, SEEK_END); s = ftell(FP); rewind(FP); buffer = (c

我正在读取一个文件,由于malloc,它将文本文件的内容保存到*buffer。但是,我希望将文件的内容传输到char数组。我怎样才能做到这一点

以下是我目前的代码:

#define LENGTH_OF_INPUT 49

FILE *FP = fopen("InputString.txt", "r");

char *buffer;
char InputString;

fseek(FP, 0L, SEEK_END);
s = ftell(FP);
rewind(FP);
buffer = (char*) malloc(s); /* buffer now is the content of the file */

if (buffer != NULL) /* If buffer was allocated... i.e the file exists*/
    {
    fread(buffer, s, 1, FP);
    fclose(FP); /* Must.. Close.. File.. */

    FP = NULL; /* For decaying pointer?? */

for (sizeofbuffer = 0; *buffer != '\0'; ++sizeofbuffer)
{
    *buffer++;
}

if (sizeofbuffer == LENGTH_OF_INPUT - 1 ) /* Check if the length of the string = 48 */
    {
        /* Correct length! */

        /* Also need to reset *buffer so that this for loop copies from the first letter */

        for (i = 0; *buffer != '\0' ; ++sizeofbuffer) /* Save to InputString*/
        {
            /* CODE NEEDS TO GO HERE!! */
        }
    }
如果char数组包含早期'\0',我不想使用strcpy

编辑:我找到了这个;但我不明白(它是否相关?

更改此项:

buffer = (char*)malloc(s);
为此:

buffer = (char*)malloc(s+1);
buffer[s] = 0;
关闭文件后返回
buffer
;代码的其余部分是多余的。除此之外,不要忘记在程序执行过程中的稍后某个点释放
缓冲区所指向的内存


buffer[s]=0
的目的是让您能够将其传递给字符串函数。举几个例子:

printf("%s",buffer);
strcpy(buffer2,buffer);
strcat(buffer2,buffer);
if (strcmp(buffer2,buffer) == 0) ...

即使您对此不感兴趣,您仍然需要一种方法来检测字符串的结尾,该字符串存储在
缓冲区所指向的内存中。上面的答案建议将
缓冲区设置为0(空)字符。或者,您可以简单地使用
s
本身的值。但是,如果选择此方法,则必须在结构中同时维护
buffer
s

抱歉,由于某些原因,代码不会提交。我看到了您的编辑,并删除了我的注释。我可能犯了一个愚蠢的错误,但您不使用字符指针访问字符数组吗?你不能去
*InputString++=*buffer++,就像他们在你的链接上做的那样?这是我实际上有点困惑的事情。为什么是指针符号?打印时,会给我垃圾数据吗?@barakmanos根据请求添加了代码。你能让我看看缓冲区[s]=0的重要性吗?谢谢你的帮助!神圣的绿色的批准记号将很快授予你。解释得也很好