- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,我知道这可能会被标记为重复,但我已经到处搜索但无法弄清楚这一点,所以请耐心等待。
首先我要说的是,这是一个家庭作业,所以我无法更改函数参数类型。
此外,我不允许使用任何库(嗯,在进行更改的函数内部)。
void changeMe(char* s, int size) {
//Change s to be "Hello, World!"
}
int main(void) {
char* c;
changeMe(c, 13);
printf("%s", c); //Print out "Hello, World!"
}
(作业不需要“Hello,World!”位,但我不需要逻辑方面的帮助,只需更改传递的变量即可。)
我查遍了,大多数答案都是这样的 here ,这表示我需要将参数设置为 char** s
或 char*& s
才能更改它。
我唯一的选择是假设在传递之前已经为 s 分配了足够的内存吗?例如:
void changeMe(char* s, int size) {
int i;
for (i = 0; i < size - 1; i++) s[i] = 'a';
s[size - 1] = '\0';
}
int main(void) {
char* c = (char*) malloc(10 * sizeof(char)) ;
changeMe(c, 10);
printf("%s", c); //Prints out "aaaaaaaaa"
}
这工作正常,但从 c
声明中删除 malloc(...)
却不行。
将 malloc(...)
放入 changeMe(...)
函数中可以在本地工作,但仅持续 changeMe
> 在范围内。
有没有一种方法可以更改我的 char* c
而无需假设它在传递给函数之前分配有足够的内存?
这几乎属于与上面相同的类别,所以我在这里将做一些简单的解释。
功能:
void split(char* s, char** sub, int max, char sep) {
//Split string s by sep char, store all substrings found into sub
//sub will have at most max substrings in it.
}
我并不是在寻求帮助编写通过 char c
查找和拆分 char* s
的逻辑。我能做到。我的问题主要与上面相同。如何为 char** sub
分配内存,以便它可以容纳其中的所有子字符串(当然,还可以更改传递的变量)。
例如:
void split(char* s, char** sub, int max, char sep) {
//-->(Needed) Make sub able to hold max strings.
//(Not Needed) Logic for splitting s up by sep, creating a substring.
//-->(Needed) Making sub[i] have memory to hold current substring.
}
int main(void) {
char* s = "Some String To Use";
char** subs;
split(s, subs, 10, ' ');
//subs should look like this:
//{"Some", "String", "To", "Use"}
}
我不需要帮助完成实际工作,我只是对如何将 subs
传递到 split(...)
并让它分配适当的内存并更改subs
。
如果您已经回答了我的问题,感谢您的阅读。
而且,在所有“你尝试过谷歌吗”评论出现之前,是的。以下是我到目前为止所看到的一些内容:
(编辑:谢谢黑客为我添加超链接。)
同样,如果我为自己编写此内容,我会更改参数(例如,使用 char** s
而不是 char* s
),并使用 Nice,有用的函数,如 strcpy 等,但在这种情况下我不能这样做。任何帮助/意见将不胜感激,非常感谢大家!
最佳答案
第 1 部分
size
参数的全部意义在于让函数 changeMe()
了解缓冲区的大小。您不需要假设大小,因为通常这样的函数将按如下方式使用:
int main()
{
int size;
char* c;
// some code to calculate the required size of the buffer in bytes
size = calculateRequiredSize();
// allocate the buffer
c = ( char* )malloc( size );
changeMe( c, size );
}
但是,针对您的问题,在函数 changeMe()
中,如果不假设内存缓冲区大小为 ,则无法更改存储在缓冲区中的数据> 字节已经分配。
第 2 部分
这里的逻辑相同,尽管它被分成(双关语)两部分。
只需修改您的示例,您将执行以下操作:
void split(char* s, char** sub, int max, char sep) {
char* pCurrent; // pointer to the beginning of the current substring inside the original string.
int lenCurrent; // length of the current substring
// Making sub[i] have memory to hold current substring.
int i;
for ( i = 0; i < max; ++i )
{
//(Not Needed) Logic for splitting s up by sep, creating a substring.
// OK -> I leave it to you.
sub[i] = (char *)malloc( lenCurrent + 1 ); // use length of the current substring + an extra space for the terminating NULL character
// I will leave it to you to copy the substring to sub[i]
}
}
int main(void) {
char* s = "Some String To Use";
int max = 10; // Decide the value of max out here.
char** subs = (char**)malloc( max * sizeof( char* ) );
// Make subs able to hold max strings.
split(s, subs, max, ' ');
//subs should look like this:
//{"Some", "String", "To", "Use"}
}
关于C 按引用传递、单维和多维,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19972336/
我的数据库表是: author book repeat ------ ----
众所周知,我们可以简化 SELECT * FROM A WHERE X=1 OR X=4 OR X=9 如下: SELECT * FROM A WHERE X IN (1,4,9) “多维”条件是否有
我在大学时正在编写 Android 应用程序。 用户被询问必须回答的问题。 我通过服务器的 HTTP 请求/响应获取问题。它们以字符串形式传递。该字符串看起来像这样,有两个问题: (requested
我怎样才能在 C++ 中使用 vector 制作这样的表格: 65 A 66 B 67 C 我是用这样的动态二维数组完成的: int** ary = new int*[2]; for (int
运行时: if (data.custaccount.webaddress) { alert('found it'); } 我得到了错误 data.custaccount is undefined
如何按名称对对象数组进行排序。 数组构造数组的例子: object[] o = new object[items.Count+(row-exists)]; int i = 0;
如何创建二维 vector ?我知道在二维数组中,我可以这样表达: a[0][1]=98; a[0][2]=95; a[0][3]=99; a[0][4]=910; a[1][0]=98; a[1][
这是我的第一个问题。 我有很多组数据。它们中的每一个都应该在 DataFrame 中呈现。我试图通过将 DataFrame 作为多维元组的一项来实现这一点,例如: data[0][1].Glucose
有人可以建议改进我对多维 lstm 的实现吗? 它非常慢并且使用大量内存。 class MultiDimentionalLSTMCell(tf.nn.rnn_cell.RNNCell): """ Ad
我已为我在另一个基于 WPF 的应用程序中使用的 Azure 移动服务添加了到 MVC 站点的连接。 我不太熟悉如何通过移动服务在 MVC 中显示数据,找不到任何很好的示例来展示如何在页面上(例如在网
这样写对吗?有没有更好的写法呢?这与我正在使用的真实数据类似,我想确保将对象或数组正确嵌套在 JSON 文件中。 var data = [ { "department": "I
我有一个HashMap当我调用 .toString() 时,它看起来像这样: {somekey=false, anotherKey=someString, thirdKey={nestedKey=he
是否有更 pythonic 的方式来执行以下操作: import numpy as np def diagonal(A): (x,y,y) = A.shape diags = []
我有以下结构: import java.util.LinkedHashMap; ... LinkedHashMap level0 = new LinkedHashMap(); LinkedHashMa
如何访问 Arraylist 中的整数数组(两者均可调整大小)? 到目前为止我有这个代码: List vertices_passed = new ArrayList(); 我想进入vertices_p
我想知道 MiniZinc 语言中是否可以有(多维)数组的数组。 确实,我想解决 worker 的时间表问题。我的目标是检查它们是否每周至少有 1 天可用。每个 worker 都由一个整数索引,我每周
这个问题已经有答案了: how is axis indexed in numpy's array? (5 个回答) 已关闭 3 年前。 我还没有理解 NumPy 中多维数组中的轴之间的区别。你能给我解
我试图 $.post 包含一些表单数据以及数组中的一些其他数据。我可以将数组插入表单数据的其余部分,但我丢失了数组中的键,并且数据仅表示为字符串,我想我要求的是多维数组? 这是当前的响应字符串: ar
我是 numpy 新手,试图理解 here 中的以下示例。我无法理解的输出 >>> palette[image] 当索引数组 a 是多维时,单个索引数组引用 a 的第一个维度。以下示例通过使用调色板将
这个问题已经有答案了: JavaScript associative array to JSON (5 个回答) JSON.stringify doesn't work with normal Jav
我是一名优秀的程序员,十分优秀!