小编kub*_*j21的帖子

C:隐含的功能声明

我正在开发一个我们正在开发自己的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)

c sockets implicit-declaration

16
推荐指数
1
解决办法
5万
查看次数

Makefile - 移动目标文件

经过一些搜索,我成功地将以下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)

我希望能够将我的目标文件移动到另一个目录中,但一直在努力使其工作.我错过了什么?

makefile

3
推荐指数
1
解决办法
7517
查看次数

打印空指针的位

如果我创建一个空指针,并将一段内存分配给该空指针,我如何打印出我刚刚分配的各个位?

例如:

void * p;
p = malloc(24);
printf("0x%x\n", (int *)p);
Run Code Online (Sandbox Code Playgroud)

我想上面打印我刚刚分配的 24 位。

c bits void-pointers

2
推荐指数
1
解决办法
4063
查看次数

C - 如何搜索文件并覆盖其中的一部分

我正在研究一个程序,该程序在文件中写入一个特定的字符串,该字符串在写入文件时在结构中.如果我在该文件中找到匹配项,我需要覆盖该结构的一部分.在文件中搜索匹配非常简单,但我正在努力覆盖该结构.下面是我的代码搜索文件并尝试覆盖该数据.

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是一个结构.有多个结构可以存储在我的文件中的任何位置.我需要搜索每个标头的特定字符串(简单).找到匹配项后,必须覆盖该结构.

什么样的过程会被推荐用于完成这样的任务?

c fopen

2
推荐指数
1
解决办法
1602
查看次数

递归调用不会返回?

我在我的程序中实现了二进制搜索,但由于某种原因,它完全忽略了我的一个返回语句.有关的退货声明如下: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)

java recursion binary-search

0
推荐指数
1
解决办法
182
查看次数

结构中的链表是否可行?

我正在处理一项处理存储和排序某些数据的任务.我有一个想法,创建一个简单的数据结构如下:

struct names 
{
char username[9];
linked list of structs
}

struct login
{
char ip_addr[16];
int count;
}
Run Code Online (Sandbox Code Playgroud)

我有登录结构的链接列表正常工作,但是,我不确定如何将结构的链接列表插入到不同的结构列表中.它甚至可能吗?

c struct linked-list

0
推荐指数
1
解决办法
841
查看次数

C:读取中的地址错误

一旦打开文件,我正在努力阅读一个非常简单的任务.使用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)

c io

0
推荐指数
1
解决办法
3958
查看次数