Tag: 数组

为什么c ++中的x == y ?

可能重复: 在C数组中为什么这是真的? a [5] == 5 [a] 有人告诉我这个…我起初并不相信它们,但确实有效。 如果x和y在整个代码中没有变化,为什么这会起作用: int x [5] = { 0,1,2,3,4}; int y = 3; if(x[y] == y[x]){ cout << "Why…" << endl; } x数组在索引y中的值是如何=数组y中的x索引值? 但是没有yarrays。

删除子字符串中给定位置的C中的子字符串

假设我有一个包含20个字符的char *example 。 我想删除example[5]到example[10]中的每个字符,然后修复数组,以便example[11]紧跟在example[4] 。 基本上将删除区域后的所有字符移动到删除区域开始时。 有任何想法吗? 编辑:我认为使用memcpy可能有一种方法? 但我不知道该怎么做。

使用fork()和exec()在C中执行命令行管道

我询问了我的代码,答案是不正确的。 在这种情况下perror使用现在我想知道我如何调整和改进,以便我不再有这些错误? execvp不会返回,除非发生错误,所以如果一切正常,封闭函数将永远不会返回。 由于先前的循环,值’i’已经超过’cmd’中数组的末尾,因此’cmd [i] .argv [0]不正确。 cmd不是struct命令的数组,因此不应编入索引 cmd.argv中的第一个条目是指向最后一个条目为NULL的数组的指针。 execvp将在该(并且只有那个)数组上工作,因此所有其他指向数组的指针都将被忽略 代码中存在大量错误。 例如,第一次通过fork_pipe()’in’中的循环包含垃圾。 传递给execvp()的第二个参数需要是一个指向字符串的指针,带有一个最终的NULL指针。 缺少最后的NULL指针,还有很多问题 #include #include #include #include #include #include struct command { const char **argv; }; /* Helper function that spawns processes */ int spawn_proc (int in, int out, struct command *cmd) { pid_t pid; if ((pid = fork ()) == 0) { if […]

字符串/分段错误

/* Program to calculate trip and plan flights */ #define TRIP 6 #define NAMEMAX 40 #define DEST 1 #include #include int main(void) { int i, trip_num, row, col; char travel_name[TRIP][DEST], dest_in[1]; printf(“Please enter the number of trips:”); scanf(“%d”, &trip_num); while (trip_num > TRIP) { printf(“Invalid number of trip. (Min of 3 trips and Max 6 […]

在数组中移动元素

我需要一些帮助。 我想将数组中的元素向上移动一个元素,以便新位置1包含位置1的旧值,new-2包含old-1,依此类推。 旧的最后一个值被丢弃,第一个位置的新值是我每秒给出的一个新值。 我使用大小为10的数组: uint32_t TEST[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 我使用的代码必须每秒执行一次。 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { /* Code for shifting the elements */ for (int i = 0; i < 9; i++) { TEST[i+1] = TEST[i]; } TEST[0] = HAL_ADC_GetValue(&hadc); }

使用2D动态分配的字符串创建动态分配的结构

我正在尝试用字母网格扫描。 cases是字母网格的数量, r , c是每个网格的行数和列数。 我想我可以用里面的2D数组创建一个结构数组。 我已经在这个工作了几个小时了,它仍然给我带来问题: 警告: 警告C4477 (第12行) – ‘scanf_s’:格式字符串’%s’需要类型为’char *’的参数,但可变参数1的类型为’int’ 警告C4473 (第12行) – ‘scanf_s’:没有为格式字符串传递足够的参数 错误: 编译器错误C2274 编译器错误C2461 代码: scanf_s(“%d”, &cases); struct grid { char **grid; }; struct grid *grids = (struct grid*)malloc(cases * sizeof(struct grid)); for (i = 0; i < cases; i++) { scanf_s("%d %d", &r, &c); grids[i].grid = (char**)malloc(sizeof(char*) * […]

如何将字节数组(包含hex值)转换为十进制

我正在为Atmel微控制器编写一些代码。 我通过Uart获取一些数据,并将这些hex值存储到一个数组中。 假设数组的元素是:1F,29和3C。 我想有一个像0x1F293C这样的hex数,并将其转换为十进制数。 所以,我想最后得到“2042172”。 该数组可以有n个元素,所以我需要一个通用的解决方案。 谢谢。

2d数组,在C中使用calloc

我正在尝试为字符存储行创建一个二维字符串数组。 例如: lines[0]=”Hello”; lines[1]=”Your Back”; lines[2]=”Bye”; 因为线必须是动态的,所以我不知道我需要多少行。 这是我的代码: int i; char **lines= (char**) calloc(size, sizeof(char*)); for ( i = 0; i < size; i++ ){ lines[i] = (char*) calloc(200, sizeof(char)); } for ( i = 0; i < size; i++ ){ free(lines[i]); } free(lines); 我知道每条线都不能超过200个字符。 我一直收到错误,如“错误C2059:语法错误:’为’”等等。 我做错了什么想法?

C:分配给指针时数组的行为

#include main() { char * ptr; ptr = “hello”; printf(“%p %s” ,”hello”,ptr ); getchar(); } 嗨,我试图清楚地理解如何将数组分配给指针。 当你将一个字符数组分配给chars ptr=”hello”;的指针时,我会注意到ptr=”hello”; 数组衰减到指针,但在这种情况下,我分配一个不在变量内的数组的字符,而不是包含它们的变量“,这种赋值方式是否专门为”Hello”采用内存地址(显然是发生),是否可以修改存储该数组的内存地址中包含的“Hello”中每个元素的值。作为比较,我可以分配一个带有数组的指针,例如像int_ptr = 5,3,4,3;这样含糊不清的东西int_ptr = 5,3,4,3;并且值5,3,4,3位于内存地址中,就像“Hello”一样。如果不是,为什么只能用字符串?谢谢在先进。

如何读取数组中的随机数int

我想将空格分隔的整数读入一个数组,当我按回车时它应该在任何时间点停止读取,如何实现这个程序的循环请帮我解决这个问题。 我试过下面的代码,但它不起作用。还有如何再次阅读。 #include int main() { int arr[30]; int j=0; while(1) { int d; scanf(“%d”,&d); arr[j++]=d; if(d==’\n’)break; } return 0; } 提前致谢