如何在C中将段落读作单个字符串?

时间:2015-11-11 06:27:40

标签: c string

我正在编写一个应该在用户的文章中阅读的C程序。论文分为多段。 我不知道文章会有多少行或字符,但我知道它以哈希符号(#)结尾。我想只使用尽可能多的内存来保存文章。

这是我到目前为止所尝试的内容:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


main(){

    int size;
    char *essay;

    printf("\n how many characters?\n");
    scanf("%d", &size);
    essay =(char *) malloc(size+1);
    printf("Type the string\n");
    scanf("%s",essay);

    printf("%s",essay );

}

正如我之前所说,我事先并不知道(并且不想问)关于字符的数量。如何动态分配内存以节省空间? (什么是动态内存分配?)是否有另一种节省内存的方法,不依赖于动态分配?

此外,我的代码现在一次只能读取一行。如何读取多行并将它们存储为单个字符串?

这是另一个代码

 #include<stdio.h>

main() {
   char essay[100];

   printf("Type the essay:\n");
   scanf("%[^#]s",  essay);

   printf("the essay : \n%s", essay);


}

它正在工作,但指定字符数

是错误的

0 个答案:

没有答案