如何为字符串动态分配内存?
我想将一个文本文件作为输入,并将该文件的字符存储到一个字符串中。
首先,我计算文本文件中的字符数,然后为这个大小动态分配字符串,然后将文本复制到字符串中。
main()
{
int count = 0; /* number of characters seen */
FILE *in_file; /* input file */
/* character or EOF flag from input */
int ch;
in_file = fopen("TMCP.txt", "r"
我想要创建两个数组,因此我使用malloc分配动态存储。
mov rdi, 10
call malloc
mov dl, [rax]
mov [rbx], dl ; <- right here is the problem
call malloc
但是我的程序实际上并没有交换值,而是崩溃了。rdx是0在dl中移动[rax]之后
我做错了什么?我在网上没有发现任何东西
编辑:
我认为这将是等价的C代码。不得不说我以前从来没有和C合作过。
void create_array(int n) {
int a[n];
int b[n
我正在尝试编写一个Java程序,在文本文件中打印一个已知单词的前后。
例如,假设我知道一个单词"like"
文本文件包含类似以下Sam like chocolate and other stuff的文本
我需要打印在已知单词like之前和之后的Sam和chocolate。有没有人能给出一个Java程序来完成上面的任务。
这是我的老师教我们的示例代码“如何在C中动态分配数组?”但我不完全理解。以下是代码:
int k;
int** test;
printf("Enter a value for k: ");
scanf("%d", &k);
test = (int **)malloc(k * sizeof(int*));
for (i = 0; i < k; i++) {
test[i] = (int*)malloc(k * sizeof(int)); //Initialize all the values
}
我想,在C中,要定义一个数组,必须将[]放在名
有人能帮助我理解为什么当我试图打印出student_name的值时,它只返回null吗?我正在用C实现一个基本的哈希表来存储a学生的名字、id和2个测试。所有其他东西都是正确存储的,无论我尝试什么,我都无法保存student_name。我有两个结构,哈希表本身,然后记录,我打算放在表中的元素。字符串将永远不会超过18个字符。
int main(){
char op[1];
int stu_id[1];
int exam1[1];
int exam2[1];
char * student_name = (char*)malloc(18*sizeof(cha
我想从txt文件中读取全文,然后打印出来。它应该具有动态内存管理和逐字符的特性。我的代码可以很好地处理短文本(最多)。(40个字符),但是当我读到更多的字符时会崩溃。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *s;
int n, i;
s = (char*) malloc(sizeof(char));
n=0;
FILE *f=fopen("input.txt","r");
while (fscanf(f, "%c
我试着从蟒蛇的背景中教自己C。我目前的小问题是尽量减少像数组长度这样的硬编码,并根据输入动态分配内存。
我写了下面的程序。我希望得到社会各界的建议,以下列方式修改它:
1.)使first和last Name元素可变长度。目前,它们的长度被硬编码为MAX_NAME_LENGTH。这将涉及更改Name的struct声明以及为其元素赋值的方式。
2.)奖励:想出一些方法来逐步向name_list数组中添加新元素,而不必事先确定其长度。基本上是一个可扩展的列表。
/* namelist.c
Loads up a list of names from a file to then do som
我有一个C的任务,并试图解决它几个小时,但尚未成功。
所以我需要读取一个文本文件并将其内容附加到struct类型数组中,
文本文件=>
5 5 7
H1-1哺乳动物生产的乳白色液体
H21IN,用于表示空间、地方或范围内的包含
H3-3公共汽车--一辆可容纳许多乘客的公路车辆
这是代码=>
#define LINESIZE 100
typedef struct
{
char *word; //word and corresponding hint
char *clue;
int x; //Starting x and y positions
in
我正在用c语言编写一个程序,它会查找一个标准输入的文本文件,其中包含"string int“行。最初我让程序在使用scanf时运行得很好,但现在名称必须是动态字符串(运行时已知的大小),当我将grade_entry中的名称切换为指针时,它开始出现分段错误
typedef struct grade_entry {
char *name;
int grade;
} grade_entry;
struct grade_entry grade_list[100];
int main(){
int grade;
int done;
int
在c或c++中,有没有办法跟踪动态分配的内存。假设我有这样的代码
void somefunction(some arguments,long mc){
//allocate b bytes of memory using malloc,calloc or new
mc += b;
//allocate once again, say p bytes
mc += p;
//deallocate q bytes using delete or free()
mc -= q;
print "mc bytes allocated at this point";
}
可以将
我正在将一些MATLAB代码翻译成C语言,并且我要转换的脚本大量使用了具有10*100*300个复杂条目的3D数组。阵列的大小还取决于传感器的输入,理想情况下阵列应该是动态分配的。到目前为止,我已经尝试了两种方法,第一种是平面一维数组,如下所示
value = array[x + (y*xSize) + (z*ySize*xSize)]
用起来会伤到我的大脑。我还尝试了一个指针数组的数组
int main () {
int ***array = malloc(3*sizeof(int**));
int i, j;
for (i = 0; i < 3; i++) {
我想创建一个动态矩阵来输入一个字符,所以我首先创建一个int的动态矩阵,然后切换它以使动态矩阵的代码正确工作: #include <stdio.h>
#include <stdlib.h>
int main(){
int r , c , b;
int *ptr, count = 0, i;
printf("ROWS ");
scanf("%d",&r);
printf("COLS ");
scanf("%d",&c);
我正在努力找出是什么导致了这个OutofMemory错误。提供更多的内存不是解决方案,因为我的系统没有足够的内存。相反,我必须找到一种重写代码的方法。
我已经简化了我的代码,试图隔离错误。请看以下内容:
File[] files = new File(args[0]).listFiles();
int filecnt = 0;
LinkedList<String> urls = new LinkedList<String>();
for (File f : files) {
if (filecnt > 10) {
System.exi
根据我对C的理解,在尝试初始化时,似乎应该使用malloc( size ),例如,一个数组的大小直到运行时才知道。
但是,我想知道为什么函数malloc()返回指向变量位置的指针,以及为什么需要这样做。
基本上,为什么C不把它全部隐藏起来,这样每当你做这样的事情:
// 'n' gets stdin'ed from the user
...
int someArray[n];
for(int i = 0; i < n; i++)
someArray[i] = 5;
您可以不需要调用malloc()或其他函数就可以这
我试图在C中读取一个大的滴答文件,并且每秒钟都保存一个结构。在每一秒,我将有不同的代码在这个结构中。但是,如果我们在几秒钟内看到过多的代码代码,代码就会崩溃。
例如,
在第二名,它只有10个代码。在第二个1000,它看到了10000。
我的代码将为每秒钟分配相同大小的内存,因此它在安静的秒中浪费了太多的内存,但对于繁忙的秒却不够大。
请在下面找到我添加的结构代码,
long int addTickArray(long int TickTime, int maximumOrderSize, struct TickArray*TickArray, long int TickPos) {