我正在编写一个应该在用户的文章中阅读的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);
}
它正在工作,但指定字符数
是错误的