小编pr1*_*m3x的帖子

C中_Bool和bool类型的区别?

任何人都可以解释一下C中的_Bool和bool数据类型有什么区别?例如

 _Bool x = 1;
  bool y = true;

  printf("%d", x);
  printf("%d", y);
Run Code Online (Sandbox Code Playgroud)

c

54
推荐指数
2
解决办法
4万
查看次数

何时以及为何使用malloc?

好吧,我无法理解何时以及为什么需要使用分配内存malloc.

这是我的代码:

#include <stdlib.h>

int main(int argc, const char *argv[]) {

  typedef struct {
    char *name;
    char *sex;
    int age;
  } student;


  //Now I can do two things
  student p;

  //or
  student *ptr = (student *)malloc(sizeof(student));

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么我可以使用时需要分配内存student p;

c malloc dynamic-memory-allocation

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

无法将argv传递给函数

这是我的计划.

#include <stdio.h>

void help(const char *argv);

int main(int argc, const char *argv[]) {

    const char *p;
    int x;

    for(x = 0; x < argc; x++) {
        p = argv[x];
        if(*p == '-') {
            p++;
        }
        switch(*p) {    
            case 'h':
                help(*argv);
                return 0;
            break;
        }
    }
    return 0;
}

void help(const char *argv) {
    fprintf(stderr, "Usage %s: [option]\n", argv[0]);
}
Run Code Online (Sandbox Code Playgroud)

问题是在编译过程中我得到了

警告:格式'%s'需要类型'char*',但参数3的类型为'int'

如何在帮助功能中打印程序名称?

c

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

用strcpy连接字符串

这是我的代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main() {

 char f[] = "First";
 char s[] = "Second";
 char *tmp = malloc(strlen(f) + strlen(s) + 2);
 strcpy(tmp, f);
 strcpy(tmp, s);
 printf("%s", tmp);
 free(tmp);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试连接f和s.问题是tmp只包含"Second"作为数组.我想念的是什么

c

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

非静态变量初始化

我正在读一本关于C progaming faq的书.这是本书的篇章

自动变量是在没有static关键字的函数或代码块内定义的变量.如果未显式初始化这些变量,则这些变量具有未定义的值.如果未初始化自动变量,则必须确保在使用该值之前将其分配给它.

这是我的代码:

#include <stdio.h>
int main (int argc, const char * argv[])
{    
    {
        int x;
        printf("%d", x);
    }
}
Run Code Online (Sandbox Code Playgroud)

结果printf为0.为什么变量初始化?

c

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

为什么我会收到不兼容的指针类型错误?

我研究了C指针,并想知道为什么编译器在以下代码中发出不兼容的指针类型错误:

#include <stdio.h>


const char *months(int n);
int main() {
    char **p = months(2);

    printf("%s", **p);
}

const char *months(int n) {
  const char *m[] = {
        "Invalid month",
        "January",
        "February",
        "March",
        "Aprli"
    };
    return (n == 0 || n > 12) ? m[0] : m[n];
}
Run Code Online (Sandbox Code Playgroud)

我希望printf在月份显示"二月",但是在编译过程中我得到了错误"不兼容的指针类型初始化'char**',表达式为'const char*'".

如果没有错误,月份函数返回指针指向"n"个月.接下来,我创建一个指针p来指向月份函数的结果.

这有什么不对?

c

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

将一个字符串复制到另一个

我在将文本传递给结构成员时遇到问题。这是我的代码

#include <stdio.h>
#include <string.h>


typedef struct {
    char *name;
    int rank;
    int weapons;

}player;

player create_player(char name[], int rank, int weapons);
void display_player(player data);

int main (int argc, const char * argv[])
{
    player tmp = create_player("First", 3, 3);
    display_player(tmp);
}

player create_player(char name[], int rank, int weapons)
{
    player newobj;
    char *tmp = malloc(strlen(name) + 1);

    strcpy(newobj.name, tmp);
    newobj.rank = rank;
    newobj.weapons = weapons;
    free(tmp);
    return newobj;
}

void display_player(player data)
{
    printf("Player name %s\n", data.name);
    printf("Player rang …
Run Code Online (Sandbox Code Playgroud)

c

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

在scanf功能上无限

这段代码有什么问题?即使输入"1"或"2",while循环也会继续运行.

#include "stdio.h"

void helper(void);
int main() {
    int s;

    scanf("%d", &s);

    while(s!=1 || s!=2) {
        helper();
        scanf("%d", &s);
    }

    return 0;
}

void helper(void) {
    printf("Please use 1 or 2 as option");
}
Run Code Online (Sandbox Code Playgroud)

c

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

打印浮点值时出现奇怪的行为

这是我的计算

float c = 5.0 * (12.0 - 32.0) / 9.0;
printf("%f.2", c);
Run Code Online (Sandbox Code Playgroud)

结果是-11.111111.2但我预计是-11.11.怎么了 ?

c

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

计算C中数组中的元素

我无法弄清楚如何找到数组的大小就是我所做的

#include "stdio.h"

#define DEBUG 1



static void print_array(int arr[]);

int main (int argc, const char * argv[])
{
    int str_numbers[5] = {1,4,8,2,9};

    print_array(str_numbers);
}


static void print_array(int arr[])
{
    int total = sizeof(arr)/sizeof(arr[0]);

#ifdef DEBUG
    printf("Total %d", total);
#endif
}
Run Code Online (Sandbox Code Playgroud)

结果总共是2而不是5.我想念的是什么?

c

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

标签 统计

c ×10

dynamic-memory-allocation ×1

malloc ×1