我正在开发一个我们正在开发自己的RPC客户端的任务.编译我的服务器部分后,我收到以下警告:
implicit declaration of function 'read'
implicit declaration of function 'write'
Run Code Online (Sandbox Code Playgroud)
我明白如果我要在主要的ex之后创建一个函数,我通常会收到此警告:
int main() {
doSomething();
}
void doSomething() {
...
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,它应该抱怨我创建"doSomething"的功能.
为什么我的编译器会抱怨系统调用是隐式声明的,当它出现在main之前声明的函数中时?以下是系统调用的显示功能.
void Open(int connfd) {
/*Get message size*/
unsigned char temp[4] = { 0 };
int n = read(connfd, temp, 4);
if(n < 0) {/*On error*/
perror("Read error");
exit(1);
}/*End if*/
unsigned int msgSize = temp[0] +
(temp[1] * 256) +
(temp[2] * 256 * 2) +
(temp[3] * 256 * 3);
printf("msgSize = %d\n", msgSize);
/*Allocate …Run Code Online (Sandbox Code Playgroud) 经过一些搜索,我成功地将以下Makefile放在一起:
CC = gcc
CFLAGS = -c -Wall
LDFLAGS =
SOURCEFILES = main.c
SOURCES = src/$(SOURCEFILES)
OBJECTS = $(SOURCES:.c=.o)
EXECUTABLE = netsim
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.c.o:
$(CC) $(CFLAGS) $< -o $@
clean:
rm -rf netsim $(OBJECTS)
Run Code Online (Sandbox Code Playgroud)
我希望能够将我的目标文件移动到另一个目录中,但一直在努力使其工作.我错过了什么?
如果我创建一个空指针,并将一段内存分配给该空指针,我如何打印出我刚刚分配的各个位?
例如:
void * p;
p = malloc(24);
printf("0x%x\n", (int *)p);
Run Code Online (Sandbox Code Playgroud)
我想上面打印我刚刚分配的 24 位。
我正在研究一个程序,该程序在文件中写入一个特定的字符串,该字符串在写入文件时在结构中.如果我在该文件中找到匹配项,我需要覆盖该结构的一部分.在文件中搜索匹配非常简单,但我正在努力覆盖该结构.下面是我的代码搜索文件并尝试覆盖该数据.
dfp = fopen(archName, "ab");
if(dfp == NULL) {
printf("An error has occurred... %s could not be opened.\n", archName);
return 0;
} /* End if */
/* Read first header file */
fread(&getHeader, sizeof(getHeader), 1, dfp);
/* Check for match */
if(strcmp(fName[0], getHeader.file_name) == 0) {
getHeader.deleted = (char)49;
fwrite(&getHeader, sizeof(getHeader), 1, dfp);
Run Code Online (Sandbox Code Playgroud)
请注意,getHeader是一个结构.有多个结构可以存储在我的文件中的任何位置.我需要搜索每个标头的特定字符串(简单).找到匹配项后,必须覆盖该结构.
什么样的过程会被推荐用于完成这样的任务?
我在我的程序中实现了二进制搜索,但由于某种原因,它完全忽略了我的一个返回语句.有关的退货声明如下:return array[mid];
当我使用Eclipse的调试器时,我可以看到它进入if语句,运行return,然后它跳到以下两行:binarySearch(array, key, low, mid - 1);,return null;.
知道为什么会这样吗?
public Entry<K, V> binarySearch(Entry<K,V>[] array, K key, int low, int high) {
if(low >= high) {
Entry<K,V> notFound = new EntryNode<K,V>(null, null);
return notFound;
} else {
int mid = (low + high) / 2;
if(key.equals(array[mid].getKey()))
return array[mid];
else if(comparator.compare(key, array[mid].getKey()) < 0)
binarySearch(array, key, low, mid - 1);
else
binarySearch(array, key, mid + 1, high);
} //End else statement
return null;
} //End binarySearch …Run Code Online (Sandbox Code Playgroud) 我正在处理一项处理存储和排序某些数据的任务.我有一个想法,创建一个简单的数据结构如下:
struct names
{
char username[9];
linked list of structs
}
struct login
{
char ip_addr[16];
int count;
}
Run Code Online (Sandbox Code Playgroud)
我有登录结构的链接列表正常工作,但是,我不确定如何将结构的链接列表插入到不同的结构列表中.它甚至可能吗?
一旦打开文件,我正在努力阅读一个非常简单的任务.使用perror,我看到报告的错误是"坏地址".这是什么意思,我该如何解决它?
int freqCheck(char * fileName) {
/*Allocate buffer*/
struct stat fileStat;
stat(fileName, &fileStat);
int size = fileStat.st_size + 1;
void * buf = malloc(size);
memset(buf, 0, sizeof(buf));
if(buf = NULL) {
printf("An error has occurred while allocating memory\n");
return 0;
}/*End if*/
/*Read file*/
int fd = open(fileName, O_RDONLY);
if(fd < 0) {
perror("Open error");
return 0;
}/*End if*/
ssize_t num;
while((num = read(fd, buf, size - 1)) > 0) {
printf("num = %d\n", num);
}/*End while*/
if(num < 0) …Run Code Online (Sandbox Code Playgroud)