Questions tagged «c»

C是用于系统编程(OS和嵌入式),库,游戏和跨平台的通用编程语言。该标记应与ISO 9899标准(除非另有说明,最新版本9899:2018中定义的有关C语言的一般问题)一起使用-还要使用c89,c99,c11等标记特定于版本的请求。C与C ++截然不同,在没有合理理由的情况下,不应将其与C ++标记结合使用。

11
C中不区分大小写的字符串comp
我有两个char*要比较的邮政编码,忽略大小写。有功能可以做到这一点吗? 还是我必须遍历每个使用tolower函数,然后进行比较? 任何想法,此函数将如何对字符串中的数字做出反应 谢谢

20
如何确定C中整数的位数?
例如, n = 3432, result 4 n = 45, result 2 n = 33215, result 5 n = -357, result 3 我想我可以把它变成一个字符串,然后得到字符串的长度,但是这看起来很复杂且容易破解。
74 c  math 

4
如何检查Windows中C中是否存在目录?
题 在Windows C应用程序中,我想验证传递给函数的参数,以确保存在指定的路径。* 如何检查Windows中C中是否存在目录? *我了解您可以进入比赛条件,在检查存在的时间到使用不再存在的路径之间的时间,但是我可以解决。 其他背景 当权限起作用时,明确知道目录是否存在可能会变得很棘手。在尝试确定目录是否存在时,该进程可能没有访问目录或父目录的权限。这可以满足我的需求。如果该目录不存在或我无法访问它,则两者在我的应用程序中均被视为无效路径失败,因此无需区分。(虚拟)奖励积分(如果您的解决方案提供了这种区别)。 使用C语言,C运行时库或Win32 API的任何解决方案都可以,但是理想情况下,我想坚持使用通常加载的库(例如kernel32,user32等),避免使用涉及加载非标准库的解决方案(例如Shlwapi.dll中的PathFileExists)。同样,如果您的解决方案是跨平台的,则(虚拟)奖励积分。 有关 我们如何使用Win32程序检查文件是否存在?
74 c  windows  winapi 

2
易变结构语义
将结构类型变量的实例声明为volatile是否足够(如果其字段以可重入代码访问),还是必须将结构的特定字段声明为volatile? 措辞不同,以下两者之间的语义差异(如果有): typdef struct { uint8_t bar; } foo_t; volatile foo_t foo_inst; 和 typedef struct{ volatile uint8_t bar; } foo_t; foo_t foo_inst; 我认识到,将指针类型的变量声明为volatile(例如volatile uint8_t * foo)仅通知编译器foo指向的地址可能会更改,而没有声明foo指向的值。对我来说还不清楚结构类型变量是否适用类推。
74 c  struct  volatile 

3
陷阱表示
C语言中的“陷阱表示”是什么(某些示例可能会有所帮助)?这适用于C ++吗? 给定此代码... float f=3.5; int *pi = (int*)&f; ...和假设sizeof(int) == sizeof(float),做f和*pi有相同的二进制表示/模式?


5
为什么OpenMP不允许!=运算符?
我正在尝试编译以下代码: #pragma omp parallel shared (j) { #pragma omp for schedule(dynamic) for(i = 0; i != j; i++) { // do something } } 但我收到以下错误:错误:控制谓词无效。 该OpenMP的标准规定,对于parallel for构造它“仅仅”允许以下的运营商之一:<,<=,> >=。 我不明白不允许这样做的理由i != j。对于,我可以理解,static schedule因为编译器需要预先计算分配给每个线程的迭代次数。但是我不明白为什么在这种情况下会出现这种限制。有什么线索吗? 编辑:即使我做了for(i = 0; i != 100; i++),尽管我可以放“ <”或“ <=”。

8
状态机教程[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 4年前关闭。 改善这个问题 我只是想知道是否有人知道Internet上关于开发状态机的一些很好的教程。还是电子书? 我开始在状态机上工作,只需要一些一般性的知识即可入门。
74 c  c99  state-machine 

2
使用MPI_Bcast进行MPI通信
我正在尝试使用MPI_Bcast从根节点向所有其他节点广播消息。但是,每当我运行此程序时,它总是挂在开头。有人知道这是怎么回事吗? #include <mpi.h> #include <stdio.h> int main(int argc, char** argv) { int rank; int buf; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if(rank == 0) { buf = 777; MPI_Bcast(&buf, 1, MPI_INT, 0, MPI_COMM_WORLD); } else { MPI_Recv(&buf, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status); printf("rank %d receiving received %d\n", rank, buf); …
74 c  mpi  broadcast 

7
将struct复制到C中的struct
我想将一个相同的结构复制到另一个结构中,以后再与第一个结构进行比较。问题是当我这样做时,我的编译器会警告我!我应该用其他方式还是做错了呢? 在头文件中: extern struct RTCclk { uint8_t second; uint8_t minute; uint8_t hour; uint8_t mday; uint8_t month; uint8_t year; } RTCclk; 在C文件中: struct RTCclk RTCclk; struct RTCclk RTCclkBuffert; void FunctionDO(void) { ... // Some Code /* Copy first struct values into the second one */ memcpy(&RTCclk, &RTCclkBuffert, sizeof RTCclk); }
74 c  struct  copy  microchip 

7
C:printf的浮点值
我想在逗号后打印一个浮点值,该值具有2个整数和6个十进制数字。如果我只是使用,printf("%f", myFloat)我会得到一个被截断的值。 我不知道这种情况是否总是在C语言中发生,或者只是因为我在微控制器中使用C语言(确切地说是CCS),但是在参考文献中它告诉%f我们:截断的浮点数。 如果我的浮点数是44.556677,我"44.55"只打印出前两位十进制数字。 所以问题是...我该如何打印我的6位数字(只有其中的6位数字,以防万一我在那之后有零)?
74 c  floating-point 

2
x86_64汇编器中RBP寄存器的用途是什么?
所以我尝试学习一些汇编,因为计算机架构课程需要它。我写了一些程序,例如打印斐波那契数列。 我认识到,每当我编写一个函数时,我都会使用这三行代码(正如我从将生成的汇编代码gcc与其C等效代码进行比较中学到的那样): pushq %rbp movq %rsp, %rbp subq $16, %rsp 我对此有2个问题: 首先,为什么我需要使用%rbp?%rsp它的内容移至%rbp第二行,使用起来更简单吗? 为什么我必须从中减去任何东西%rsp?我的意思是,并非总是如此16,当我要printf输入7或8个变量时,我会减去24或28。 我在虚拟机(4 GB RAM)和Intel 64位处理器上使用Manjaro 64位

7
我可以使用NULL代替0值吗?
我可以使用NULL指针替代值0吗? 或这样做有什么问题吗? 例如,例如: int i = NULL; 代替: int i = 0; 作为实验,我编译了以下代码: #include <stdio.h> int main(void) { int i = NULL; printf("%d",i); return 0; } 输出: 0 确实,它给了我这个警告,它本身是完全正确的: warning: initialization makes integer from pointer without a cast [-Wint-conversion] 但结果仍然相同。 我是否会由此陷入“不确定行为”? 可以这样使用NULL吗? NULL在算术表达式中用作数字值有什么问题吗? 在这种情况下,C ++的结果和行为是什么? 我已阅读的答案是什么NULL之间的区别,“\ 0”和0大约之间的区别是什么NULL,\0以及0是的,但我没有从那里简洁的信息,如果是很允许的,也是正确的使用NULL作为在赋值和其他算术运算中使用的值。

4
Xcode-警告:函数的隐式声明在C99中无效
收到警告:函数“ Fibonacci”的隐式声明在C99中无效。怎么了? #include <stdio.h> int main(int argc, const char * argv[]) { int input; printf("Please give me a number : "); scanf("%d", &input); getchar(); printf("The fibonacci number of %d is : %d", input, Fibonacci(input)); //!!! }/* main */ int Fibonacci(int number) { if(number<=1){ return number; }else{ int F = 0; …
73 c  xcode 

12
无法释放C中的const指针
我怎样才能释放const char*?我使用分配了新的内存malloc,当我尝试释放它时,我总是收到错误“不兼容的指针类型” 导致这种情况的代码类似于: char* name="Arnold"; const char* str=(const char*)malloc(strlen(name)+1); free(str); // error here
73 c  constants  free 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.