我有困难,我不能在其他.c文件中使用结构指针,
当我将指向结构的指针传递给与结构不在同一.c文件中的函数时,总是会出现这样的消息,这让我很恼火。而且,当我不能从另一个.c文件访问一个结构的结构成员时,我是g
我做错了什么?我的包括?例如,我的两个structs.h文件:
服务器.h:
#ifndef SERVER_H
#define SERVER_H
typedef struct Server_s* Server;
#include <stdio.h>
#include <s
可能重复:
更大:
if x > y then return 1, else return 0
例如:
Is大于(4,5)=0
Is大于(5,4)=1
合法运营商:!~&^|+>
这个函数更大
我试过:
int isGreater(int x, int y) {
return (y+(~x+1)) >> 31 & 1;
}
但不起作用((
让我知道我还能做什么?给定x,y
试试x+-y
如果小于0,则y更大;如果大于0,则x更大
-y=y的二进制补
这段代码给出了计算给定数的阶乘的每一步结果,但我只想要最终结果
#include <stdio.h>
long int factorial(int n) {
if (n <= 1)
return(1);
else
n = n * factorial(n - 1);
printf("%d\n", n);
return(n);
}
main() {
int n;
printf("Enter n: ");
scanf("%d", &am
维基百科对反射的定义如下:
在计算机科学中,反射是计算机运行的过程
程序可以观察(做类型内省)并修改自己的类型
运行时的结构和行为。[1]
是否有任何主要的编程语言(在学术界或工业界广泛使用)不支持任何形式的反射?我目前想到的所有例子至少都有有限的支持。但是对于C,我不确定。 < P> C,C++没有任何形式的反射。可以使用编译器将调试符号嵌入到可执行文件中,然后从可执行文件中处理符号表。但是,此过程必须由代码实现(即用c编写代码以分解和处理可执行文件中的符号表)。因此,它不是语言中固有的。 <
im使用opencv检测视频馈送中的彩色球。我正在记录圆圈的中心点。当白球移动时,我想在显示视频馈送时进行10秒的检测。在这10秒钟之后,我希望运行下一段代码。我在这方面遇到了麻烦。代码如下
while(1)
{
img = cvQueryFrame( capture );
CvSeq* circles = cvHoughCircles(gray, storage, CV_HOUGH_GRADIENT, 1, 7, 45, 40,0,25);
float* p;
在我测试的常规linux机器(内核3.4)上,它运行得非常快。但是当我把程序移到另一个linux机器(内核3.0)上时,这个函数运行得非常慢,大约需要2.5毫秒才能返回,这就慢了500倍,这导致了一个很大的性能问题
那么,造成如此巨大差异的可能原因是什么呢?我不知道为什么在运行Linux 3.0的另一台机器上速度会慢得多;有很多可能的原因,例如内核中的错误或某些缓慢的硬件。你可以凭经验来确定这一点。首先,看看问题是否出在内核版本上;在速度较慢的机器上安装较新的内核,并查看是否可以修复它。如果你不
下面是服务器端程序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
void error(const c
我是通过David Haskins写的一本名为“Linux中的C”的书来学习C的
但是有个问题。当我尝试编译此代码时:
#include <stdio.h>
#include <string.h>
int main (int argc, char *argv[], char *env[]) {
printf("Content-type:text/html\n\n<html><body bgcolor=#23abe2>\n");
我只是想知道,通过说32位机器和64位机器,到底是什么组成了32(64)位机器,所以我们把它定义为32(64)位机器。由于我目前正在学习C语言,我发现指针和内存之间的关系很好地解释了这一点。由于一个内存地址指向一个字节,因此如果内存地址由32位组成(即指针为4个字节),它最多可以有2^32个可能,这意味着它最多可以表示2^32个字节,这导致32位机器最多支持4GB RAM。这是公平的假设吗?那么,32位或64位机器是由其内存地址大小定义的吗
此外,如果一台机器是32位的,那么该机器上C中的指针是
这对我来说有点困惑,但我必须看看我在x中出现了多少次。
所以如果有人为i输入3,x为4294967295,那么应该是0次,但是如果有人为i输入9,为x输入4294967295,那么应该是3次
这就是我所拥有的,但是输出显示0和9,所以它不起作用
int main(int argc, char** argv) {
unsigned int i;
scanf("%u", &i);
unsigned int x;
scanf("%u", &x);
这是我的源代码。当我输入一个字符串“我在CSE第二年。”并将CSE第二年(即loc 9到15)替换为ECE第三年时,我会在字符串末尾得到一些垃圾值。在rslt2字符串的开头还有一个换行符。rslt2有点问题。有人能纠正这个错误吗
//splitting a string and replace latter part of string by another string
#include<stdio.h>
#include<string.h>
int main()
{
我有以下代码:
FILE *f = fopen('/path/to/some/file', 'rb');
char c;
while((c = fgetc(f)) != EOF)
{
printf("next char: '%c', '%d'", c, c);
}
出于某种原因,当打印出字符时,在文件末尾,将打印出一个不可渲染的字符以及ASCII序号-1
next char: '?', '-1'
这应该是什么角色?我知道这不是EOF,因为有一个检查,在打印字符后,程序很快就会出错。这
当我发现Valgrind只适用于Linux时,我正在研究Valgrind以帮助改进我的C编码/调试-我没有其他需要或兴趣将我的操作系统移动到Linux,因此我想知道是否有一个同样适用于Windows的程序。我过去有机会使用过,这非常好,但它相当昂贵。
一个更便宜的解决方案可能是,我只使用了5.x版本,尽管在附加到需要调试的进程时遇到了一些问题,但它工作得非常好。有关类似工具的列表,请参阅软件QA测试和测试工具资源页上的“”链接
我过去曾使用BoundsChecker、DevPartner Stu
我需要一些帮助来维护一个数据日志(任何.txt文件),在那里我需要最后四/五个事务,并删除除此之外的任何内容
例如:我使用fopen()创建了file.txt,并开始每隔30秒从缓冲区使用fwrite()进行写入。前四次写入是可以的,但当我第五次写入文件时,我希望第一个条目被删除,第五次写入()移动到第四位,其余的被相应地移动,即第二次写入第一次,第三次写入第二次。注意:每个write()数据的时间和大小与温度读数或湿度读数相同
谢谢
高拉夫
创建临时文件
从旧文件复制4个最新条目
添加新条目
服务器创建线程,这些线程使用
if (pthread_create(&array_of_threads[index], NULL, &thread_function, &argument) != 0)
signal error
线程在客户端完成后自行结束
但是,可能会出现服务器必须退出的情况—例如,在接收到信号或特殊消息后
当这种情况发生时,我希望对正在运行的线程调用pthread\u cancel(这些线程将调用pthread\u cleanup,并释放资源,
我在我的C程序上编写了两个自定义函数,供我的大学老师建议使用:
ssize_t FullRead(int fd, void *buff, size_t count) {
size_t nleft;
ssize_t nread;
nleft = count;
while(nleft > 0) {
nread = read(fd, buff, nleft);
if(errno == EINTR) {
con
我基本上想做的是从一个文件中获取行并将它们放入一个链表中。但是,当执行到达时,由于“feof”函数,部分程序停止。我无法理解这个问题
谢谢你的帮助。这是一个非常频繁的变化,只是改变一下而已
struct node
{
char item[200];
struct node* next;
};
FILE* unionMethod(char f1name[50], char f2name[50])
{
FILE* f1;
FILE* f2;
f1=fopen(f1nam
我刚刚读到,如果我们把L放在一个整数值的末尾,那么实际上它得到的存储等于长值,那么他们这么说的基本意思是什么,当我计算两个变量的大小时,它是不同的,如果它实际上占据了一个长变量的大小,很明显,它会显示大小为4字节,但它只显示了根据短数据类型大小的大小,那么它背后的原因是什么呢
值是真实的,但当我对I的值进行priint时,它只打印为90,那么一切是如何发生的呢
#include<stdio.h>
int main()
{
short i = 90L;
long j = 90;
我注意到我正在处理的应用程序(用C编写,顺便说一句)充满了realloc调用,这些调用由多个线程并行执行。我想让它更快的是使用内存池,这样我就可以以非常快的方式扩展原始阵列。但是,我不想创建自己的内存池,我只想使用线程安全(或允许多个线程同时创建池)并支持重新分配的库
我已经看了前面的问题,关于同一个问题,但是他们没有提供最终的解决方案。例如:
typedef struct {
void *bytes; /* Pointer to the allocated _bytes_. */
我正在尝试使用lex和yacc为mini-c编写解析器。在单线输入的情况下,它工作得很好;在多线输入的情况下,它抛出了一个分段错误。运行GDB没有帮助
c、 l文件
alpha [a-zA-Z]
digit [0-9]
%{
#include <stdlib.h>
void yyerror(char *);
#include "y.tab.h"
%}
%%
[ \t] ;
[ \n] { yylineno = yylineno + 1;}
int return I
我正在逐字符比较字符串
下面是我的代码中导致问题的部分:
switch(line[1]) {
case 'u':
switch(line[2]) {
case 't':
switch(line[3]) {
case 't':
switch(line[4]) {
case 'o':
switch(line[5]) {
case 'n':
我正在尝试使用我刚刚在Eclipse的C程序中使用MinGW在Windows上编译的FFMPEG库。我已成功构建了一个简单的HelloJNI.c文件并运行它:
gcc $(INCLUDES) -c -g -w HelloJNI.c
gcc -shared -o $(BIN_DIR)/hello.dll HelloJNI.o
我现在正试图编译一个使用ffmpeg的ffmpeg_native.c文件,但运行以下命令时出错:
LIBRARY_PATH = -L:"c:/Dev/msys-1.0/lo
我正在为我的班级编写一个研讨会(我是一个完全的初学者),我遇到了一些问题
#include <stdio.h>
#define arraylength 100
void GetInt();
void GetFloar();
int main (void)
{
int i, k, j;
float price[arraylength];
int barcode[arraylength];
int quantity[arraylength];
标签: C
dynamic-memory-allocation
我构建了一个图书结构,如下所示:
typedef struct _book{
char name[NAME_LENGTH];
char authors[AUTHORS_NAME_LENGTH];
char publisher[PUBLISHER_NAME_LENGTH];
char genre[GENRE_LENGTH];
int year;
int num_pages;
int copies;
}book;
我试图定义一个库,它是一个书
然后在“地址”位置打印变量“staticVar”的值
通过一些快速的研究,我了解到添加“&”意味着引用了变量“staticVar”,printf语句中的“%x”以十六进制打印出值。即使有了这些信息,我仍然不明白为什么会这样
我也在网上读到,你可以用这行打印出某个变量的地址
printf("Address: %x\nValue: %d\n", staticVar, staticVar);
这样做有好处吗
我可能只需要解释一下“&”符号的有效作用 在此特定上下文中,符号“&”有效地用变量的地址替换
我注意到错误的编译和链接命令会导致删除我的一个C源文件
假设我有两个源文件和一个头文件:test1.c、test2.c和header.h。然后,我错误地尝试用shell命令cc-std=c99-Wall-Werror-pedantic-o test1.c test2.c编译并链接这些文件
由于此错误命令,我收到错误消息:
架构x86_64的未定义符号:
“_main”,引用自:
主可执行文件的隐式输入/启动
ld:未找到架构x86_64的符号
在此之后,删除文件test1.c
我很好奇是什么导致
在这段代码中,我们希望用户输入5个数字,并将这5个数字存储在数组中,然后在数组中打印出这5个数字。但下面的代码只是将用户最后的输入存储在数组5中,而不是存储其余4个其他数字
#include <stdio.h>
#include<stdlib.h>
void main(){
int Array[5];
int i;
int l=0;
int k=0;
int j=0;
while(j<5)
{
printf("enter k valu
当代码运行时,我的scanf不显示总和,只有0.00000000
我不知道问题出在哪里
int main() {
float A, B;
float R = A+B;
printf("Digita o valor A: ");
scanf("%f",&A);
printf("Digite o valor B: ");
scanf("%f",&B);
printf("A soma de %f e %f foi igual a: %f",A,B,R);
return 0;
标签: C
controllersignal-processingmoving-average
也许您想使用微秒,这样您就可以使用整数进行采样。您只需调整公式,使结果一致。切勿将浮点值用作循环索引。使用整数:
for(t=0; t<=1; t+=1e-4)
{
input [n] = 2 + sin(w*t);
}
double t=0.0;
对于(int i=0;i
我用c语言设计了一个程序来计算行数,但它显示了垃圾值。
我的文件包含如下数据
2,8,10
3,5,7
4,5,1
3,6,8
3,7,8
3,8,4
为了计算行数,我将程序编写为
int count_lines =0;
char sample_char;
FILE *fptr;
fptr = fopen("demo3.txt", "r");
sample_chr = getc(fptr);
while (sample_chr != EOF)
{
if (sample_chr
如果我有这样的代码:
const int a=2;
int b;
int main()
{
const int c=4
static int d;
int e;
int f=5;
}
在内存堆栈、数据、堆中,这些变量存储在哪里?特别是本地未定义变量e?
未定义的局部变量e将有一个垃圾值,它来自哪里
全局变量-->数据
静态变量-->数据
常量数据类型--->代码和/或数据。考虑当常量本身将存储在数据段中的情况下的字符串文字,并将其引用嵌入到代码中。
在函数-->堆栈中声明和定义的局部变量
在主
我的问题是,我如何让代码通过它的索引位置,同时也得到它的长度,而不是通过逐字符进行。类似下面的内容(不起作用)
#包括
int main(int argc,字符**argv){
INTC;
文件*文件;
file=fopen(argv[1],“r”);
int i=0;
如果(文件){
而(我0)
{
对于(尺寸i=0;i
标签: C
Pointers
segmentation-faultfreesingly-linked-list
我试图从一个文件(每行只有一个单词的格式)中读取单词到一个单链表中。下面的代码适用于小文件。一旦我开始向要读取的文件中添加很多行,就会出现segfault错误
给出segfault的行是:free(a->word)来自destroy()函数。我想再次指出两件事:
1) 如果我不调用destroy()函数,无论文件有多大,代码都可以正常工作
2) 如果我调用destroy()函数并且word文件很小(少于100k行),那么代码也可以正常工作
我不知道是什么导致了这种行为。有什么想法吗?谢谢
ty
我有三个数字,m,n和p。我正在尝试使用嵌套if..else if..else查找最大值
以下是我的代码:
#include <stdio.h>
int main() {
// your code goes here
float m,n,p;
scanf("%f%f%f", &m,&n,&p);
if(m>n){
if(m>p){
printf("%f",m);
我认为上面提到的一些只是同义词,但哪些是同义词呢?如果我错了,也请纠正我:在函数中,比如说主函数,括号中的数据是参数/参数?a参数在函数定义中定义。它是函数执行期间参数的占位符
void printMessage(string message){ //message is a parameter.
}
参数是调用函数时传递给函数的值
printMessage("Hello World"); //"Hello World" is an argument.
尽管有人把论证看作是一个参数。
此代码用于查找给定数字序列的平均值、中值和模式
#include <stdio.h>
#include <math.h>
int main()
{ /*Inputs*/
int n;
int a[n];
/*Outputs*/
float mean;
int median;
int mode;
printf("Enter the size of array: ");
scanf("%d",&n);
for(int i=0; i<n; i++)
我是否可以编写一个包含数组的函数,例如大小为16?在函数的每次调用中,我都要修改数组的一部分。我想调用函数4次,直到整个数组被更改。我应该存储每次调用的结果,并在调用后使用新数组,直到所有数组都更改为止 是的,你可以。。。!
只需将数组声明为static,这样在函数执行完成后,数组堆栈帧就不会被清除。
e、 g
在本网站上提问时,请更加具体。试着对你的想法进行编码,然后提供代码和/或错误。这不是必要的。如果在main中声明一个数组f.e.,并将该数组传递给函数,则可以根据堆栈被清除的次数对其进行
我对scanf函数进行了分组,并将该函数命名为eno,在我的C代码中调用该函数后,它并没有完全工作。如果我在代码中单独使用scanf函数,它就会工作。所以我的问题是为什么函数不起作用?这里我显示a=0和b=1。始终:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int eno(int, int);
标签: C
segmentation-faultmalloc
因此,正如问题所说,每次我尝试为客户输入名称时,都会出现细分错误。该程序编译并运行,直到到达客户名称部分。我不确定问题是否出在malloc身上。谁能告诉我我做错了什么?我想弄明白这件事已经有一段时间了,但运气不好。谢谢
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define END_OF_STRINGS '\0'
#
我需要strtol来转换[0到255]范围内的一些数字
如果0也是我需要转换的数字,如何检查0的转换
long conv = strtol(argv, &p, 10);
if (conv == 0)
{
perror("Conversion error");
exit(EXIT_FAILURE);
}
if ((conv >= LONG_MAX || conv <= LONG_MIN) && errno == 34);
{
perror
我在用C写。我试图从文本文件中读取行,解析行,并将一些信息放入字符串数组中。当我测试代码时,数组中的每个值似乎都是最后插入的值。这是什么原因
int r;
char *users[51]; //given no more than 50 users
for (r = 0; r < 51; r++) {
int n = 15; //arbitrary guess at length of unknown usernames
users[r] = malloc((n + 1)
我有一个服务器正在使用epoll。我的问题是,处理所有缓冲区的最佳方法是什么,这样我就可以处理缓冲区中的一半或多条消息
例如:
如果消息是“你好,来自客户号#”
通过epoll接收的缓冲区:
来自客户1:“你好,来自”
来自客户端2:“来自客户端2的你好来自客户端2的你好”
来自客户端1:“客户端号1HelloFromClient号1”
在这个场景中,我需要能够识别“HelloFrom”只是半条消息,并将其存储在某个地方。然后我需要能够处理来自客户端2的两条完整消息。然后再回到我从客户1离开的地
我正在用C编写我自己的trim()。有一个包含所有字符串值的结构,该结构是由一个文件中的数据填充的,该文件包含单词开头前后的空格
char *trim(char *string)
{
int stPos,endPos;
int len=strlen(string);
for(stPos=0;stPos<len && string[stPos]==' ';++stPos);
for(endPos=len-1;endPos>=0 &
早上好
出于某种原因,当用户键入“google”时,它会在不应该输入的时候显示底部部分“未输入任何应用程序”
已经尝试在其中放入else语句,但仍然不起作用
`
while (1) {
printf("What program would you like to open, %s?\n", name);
scanf("%s", input);
if (strcmp(input,"google") == 0){
printf("Opening Google C
我编写了一个使用定时器0中断的程序
我似乎无法编译我的代码,第14行有一个错误,声明中没有标识符
以下是全部代码:
#include<xc.h>
#define _XTAL_FREQ 4000000
#define param_1=0b10001000;
#define param_2=0b10101010;
int counter=0;
void interrupt f1() {
if(TMR0IE && TMR0IF) {
count
我为我的一个弟弟在VSCode中建立了一个开发环境C,我制作了build.json和tasks.json,代码编译并运行得很好。但是对于刚接触编程的人来说,这是一件很麻烦的事情。我找到了一个一键编译和运行按钮的扩展代码运行程序。它工作得很好,但我注意到弹出的coderunner终端只是输出,不接受任何输入。谷歌搜索并找到了一个简单的解决方案,就是让coderunner使用bash。但它根本不起作用了
yudha@LAPTOP-PLIIOJAT /cygdrive/c/Users/yudha/On
我有一个ListView,我想阻止它的列被调整大小。我使用的代码与问题类似,但我的HDN_beginrack消息无法识别
创建ListView的我的代码:
HWND Instructions_ListView = CreateWindowEx(LVS_EX_DOUBLEBUFFER |
LVS_EX_FULLROWSELECT, WC_LISTVIEW, L"", WS_CHILD | WS_VISIBLE |
LVS_REPORT | LVS_ED
试图破译以下函数。
我知道pCfg是任何类型的指针,但我不确定*(AppBIACfg_type**)pCfg=&AppBIACfg正在分配给&AppBIACfg的地址
AD5940Err AppBIAGetCfg(void *pCfg)
{
if(pCfg){
*(AppBIACfg_Type**)pCfg = &AppBIACfg;
return AD5940ERR_OK;
}
return AD5940ERR_PARA;
}
它获取全局AppBIACfg
我正在用c语言建立游戏的项目系统
我想使用头来存储项数组的地址,
当此程序运行时,标头将返回
相应的地址
这是我的密码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
struct Header{
struct ItmInfo *itmAddress;
// a pointer that store the address of ItmI
某些else-if语句的工作方式与'else-if(strcmp(player1,player2)==0)不同
'或'else if(strcmp(player1,“剪刀”)==0')。这可能是他们随后的“如果”声明吗?它们是其他else-if语句的副本(经过一些修改),可以正常工作。它们几乎一模一样,所以我不明白它们为什么不起作用
#include <stdio.h>
#include <string.h>
int main(void) {
char