任何人都可以解释一下C中的_Bool和bool数据类型有什么区别?例如
_Bool x = 1;
bool y = true;
printf("%d", x);
printf("%d", y);
Run Code Online (Sandbox Code Playgroud) 好吧,我无法理解何时以及为什么需要使用分配内存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;?
这是我的计划.
#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'
如何在帮助功能中打印程序名称?
这是我的代码
#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 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指针,并想知道为什么编译器在以下代码中发出不兼容的指针类型错误:
#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来指向月份函数的结果.
这有什么不对?
我在将文本传递给结构成员时遇到问题。这是我的代码
#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) 这段代码有什么问题?即使输入"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) 这是我的计算
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.怎么了 ?
我无法弄清楚如何找到数组的大小就是我所做的
#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.我想念的是什么?