我去年发布了这个,因为一些大学项目,现在我必须再做一次(我从来没有完成我去年必须做的事情).我已经看过我以前的代码,你们所有人都回答了这些问题,但是,我似乎无法理解这一点.
我不打算把所有问题放在一篇长篇文章中,它只是让一切变得更加混乱,我需要一劳永逸地理解这一点.
我正在使用最简单的BST(只是元素的整数),我正在尝试从树中删除一个节点,它是最简单的演员,删除一个叶子.
我正在测试的树元素按以下顺序插入: 7 3 10 2 5 1 6 9 4 8
当然,顺序打印的输出是: 1 2 3 4 5 6 7 8 9 10
这是我的树结构:
typedef int TreeElement;
typedef struct sTree {
TreeElement item;
struct sTree *left;
struct sTree *right;
} Tree;
Run Code Online (Sandbox Code Playgroud)
这是我的删除功能:
int delete(Tree **tree, TreeElement item) {
if(!*tree) return 1;
Tree *currPtr = *tree;
Tree *prevPtr = NULL;
while(currPtr) {
if(item < currPtr->item) {
prevPtr = currPtr;
currPtr = currPtr->left;
} else if(item > currPtr->item) {
prevPtr …
Run Code Online (Sandbox Code Playgroud) 假设我有这个:
"foo bar 1 and foo bar 2"
Run Code Online (Sandbox Code Playgroud)
我怎么能把它分成:
foo bar 1
foo bar 2
Run Code Online (Sandbox Code Playgroud)
?
我尝试过strtok()
,strsep()
但都没有奏效.他们不承认"和"作为分隔符,他们将"a","n"和"d"视为分隔符.
任何帮助我的功能,或者我必须通过空格分割并进行一些字符串操作?
我不明白为什么atoi()
每个条目都工作,但第一个条目.我有以下代码来解析一个简单的.csv文件:
void ioReadSampleDataUsers(SocialNetwork *social, char *file) {
FILE *fp = fopen(file, "r");
if(!fp) {
perror("fopen");
exit(EXIT_FAILURE);
}
char line[BUFSIZ], *word, *buffer, name[30], address[35];
int ssn = 0, arg;
while(fgets(line, BUFSIZ, fp)) {
line[strlen(line) - 2] = '\0';
buffer = line;
arg = 1;
do {
word = strsep(&buffer, ";");
if(word) {
switch(arg) {
case 1:
printf("[%s] - (%d)\n", word, atoi(word));
ssn = atoi(word);
break;
case 2:
strcpy(name, word);
break;
case 3:
strcpy(address, word);
break;
}
arg++;
}
} …
Run Code Online (Sandbox Code Playgroud) 与我昨天发布的问题类似,我有这个问题,我无法理解.代码非常简单,应该(我认为)会产生死锁.我甚至将帐号数量减少到2,以增加死锁的可能性.
代码非常容易理解,但是要提供一些上下文.我有一个账户银行,我在账户之间进行大量转账.传输方法应该生成死锁.为什么不发生这种情况?
我只能认为,代码运行太快,但似乎不太可能发生的所有的时间.
这是完整的代码:http: //pastebin.com/HWJpuT38
我有一个练习要做我需要用C编码的代码,相当于cat和nl的命令只使用系统调用.给我们的系统调用是open(),close(),read()和write().
我已经完成了"猫"等效,它似乎运行正常,现在我需要做"nl"一个,但我遇到麻烦,我将如何逐行编写.
我们的想法是使用尽可能少的系统调用.
我知道我需要在缓冲区找到'\n',我可以做一段时间循环缓冲区并找到'\n'位置(让我们称之为X)然后将X个字节写入stdout.
但循环遍历缓冲区中的所有字符搜索行的末尾对我来说感觉不对,但我不知道我怎么能这样做...
重要编辑:
我想你们中有些人错过了我的问题......我不需要解释如何做到这一点,这不是我的问题.我知道该怎么做(或者有一个非常好的主意,我还没有尝试过)."问题"是,它感觉不对遍历缓冲区,文件也好,都烧焦成炭,找到行的末尾(无论怎样).我不是说这不是答案,或者我不允许这样做,我只是在谈论我的想法.这似乎是一种奇怪的方式,这就是全部......但如果就是这样,那就是我的问题的答案.
我很欣赏每个人的帮助:)
首先,我知道 UDP 不是一个可靠的协议,但我需要在 UDP 中做到这一点,而且我知道最终可能会发生的后果。
让我们假设我有一个长byte
数组,我将它分成 32 字节的块分成List<byte[]>
. 这意味着发送的每个数据包的长度为 32 字节。
这些数据包将foreach
循环发送,我不在乎它们是否到达目的地。这意味着我不期待主持人的确认(至少现在是这样)。
我的问题是,我将如何计算服务器在接收数据包时的当前传输速率(最好以 kbps 为单位)?
我对如何实现这样的计算感到有些困惑......
c ×4
atoi ×1
binary-tree ×1
c# ×1
concurrency ×1
csv ×1
file-io ×1
java ×1
linux ×1
rate ×1
sockets ×1
string ×1
string-split ×1
synchronized ×1
system-calls ×1
transfer ×1
udp ×1