如果我有一个指针指向字符串中的某个地方,让我们假设它指向第三个字母(我们不知道字母的位置,基本上我们不知道它是第三个字母),我们希望它指向第一个字母,这样我们可以使字符串为空,我们怎么做
例如:
如果我们有ascii作为指针
ascii现在指向字符串中的某个地方,我希望它指向字符串的第一个字符,我该怎么做
(注:
我试着说
int len = strlen(ascii);
ascii -= len;
ascii = '0';
但它不起作用,只要指针指向0,它就会改变,但不是指向0的第一个字符)
下面是我的代码片段
struct encode
{
char code[MAX];
}a[10];
int main()
{
char x[]={'3','0','2','5','9','3','1'};
for(i=0;i<1;i++)
{
printf("%c",x[i]);
//This will printout like 3025931 now I want this to be stored in structure.
为什么下面的代码每次运行时都不打印相同的值?
有什么是我忽略的吗?谢谢
#include <windows.h>
#include <stdio.h>
#include <winhttp.h>
#pragma comment (lib, "winhttp")
int main(void)
{
DWORD dwSize = 0;
DWORD dwDownloaded = 0;
LPSTR pszOutBuffer;
BOOL bResults =
我正在学习C语言中的socket编程&下载了一个简单的tcp服务器源文件。我了解这些函数中除第二个参数外的每一行:
accept(socket_fd, (struct sockaddr *)&client, &length);
bind(socket_fd, (struct sockaddr *)&server, length);
accept+bind函数是“sys/types.h”和“sys/socket.h”中的典型函数,手册页将其描述为指向结构的指针,但我仍然
我下面的小程序将从用户那里获取5个数字,存储到
整数数组,并使用函数将其打印出来。诚然,它不起作用,而且
我的输出总是“00000”。我找不到错误,所以我很乐意接受任何建议。谢谢
#include <stdio.h>
void printarray(int intarray[], int n)
{
int i;
for(i = 0; i < n; i ++)
{
printf("%d", intarray[i]);
}
}
i
这是一个非常简单的C程序,我不明白它为什么会崩溃:
int main () {
size_t argc = 2;
char **argv = malloc(argc * sizeof(char *));
for (int i = 0; i < 20; i++) {
if (i >= argc) {
argc *= 2;
argv = realloc(argv, argc);
}
这就是问题所在
对于两个字符串A和B,我们将字符串的相似性定义为两个字符串共用的最长前缀的长度。例如,字符串“abc”和“abd”的相似性为2,而字符串“aaa”和“aaab”的相似性为3。
计算字符串S与每个后缀的相似度之和
输入:
第一行包含测试用例的数量T。接下来的每一行都包含一个字符串
输出:
输出T行,其中包含对应测试用例的答案
约束条件:
1.
毫无意义。calloc中的第二个参数是正在分配的元素的大小。该呼吁应改为:
count = calloc(test_cases, sizeo
为什么主函数中的最后一个printf没有将值10打印到屏幕上?
我知道在ANSI C中,静态分配矩阵在内存中的排列方式如下:
矩阵:矩阵[0][0]、矩阵[0][1]、…、矩阵[0][ColumnsDimension-1]、矩阵[1][0]等
#include <stdio.h>
#include <stdlib.h>
#define dimRighe 20
#define dimColonne 30
int main()
{
int matrice[dimR
我有类似的东西
char string[]="My name is %s";
printf("%s",string,"Tom");
printf(string,"Tom");
我希望输出是我的名字是Tom,但是我得到我的名字是%s
我尝试转义%字符,但它无法工作
这里怎么了?如何在%s内放置%s?试试这样的方法
char string[]="My name is %s";
printf("%s",string,"Tom");
printf(string,"Tom");
你的方法的问题
我见过许多带有指针函数的程序,它们具有void返回类型。这背后的原因是什么?void指针函数的实际需要是什么
void *print_message_function( void *ptr ){
int *message,i,j;
message = (int *) ptr;
if(*message == 1){
for(i=0;i<5;i++){ res1 += array[i];
}
}
else if(*mes
代码是使用库函数复制和连接字符串。我使用的代码:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#define MAX 100
char* newStrCpy(char string1[],char string2[])
{
int i=0;
while(string1[i]!='\0')
{
string2[i]=strin
这是一个返回反向字符串的代码,如“ABC”返回“CBA”,但它返回这个“CBA”═²²²²ß♣Y*&s”。
怎么了
char* inv(char* C)
{
int lenght = strLenght(C)-1;
int idx=0;
char* tempStr = (char*)malloc(lenght+2);
for (;lenght>=0;lenght--,idx++)
{
tempStr[idx] = C[lenght]
我正在用C语言编写一些网络数据包嗅探代码(在以太局域网上运行)。在尝试打印以太网报头时,我遇到了一些困惑。根据协议,前8个字节由前导码和分隔符组成,下6个字节是MAC目标地址
然而,当我实际运行我的代码时,我发现从recvfrom调用中得到的字节中缺少了最初的8个字节(前导和分隔符)。换句话说,我可以从第一个字节本身开始读取目标地址
下面是代码的相关部分
char buffer[BUFFERSIZE];
struct addrinfo servinfo;
servinfo.ai_family
我有点麻烦。我有一个快速排序算法的实现,但当我在一个包含30多个元素的整数数组上测试它时,我认为排序需要花费很长时间。有时甚至超过10秒,这与选择排序、插入排序和气泡排序不同,它们在10000个元素上比在100个元素上的快速排序更快
以下是我的解决方案,请给出建议:)
void kvikSort(int a[],int l,int d){
int i,k;
如果(l>=d)
返回;
k=l;
掉期(&a[l]、&a[(l+d)/2]);
对于(i=l+1;i0&&a[j]0;i--)
对于(j=
我仍在完善我的C代码技能,并在正确管理内存方面不断遇到问题——如图所示。无论如何,我是从套接字读取的,只要套接字的总响应长度不大于缓冲区大小,我就没事。我知道这一点,因为当我为传入数据增加足够大的缓冲区大小时,它对更大的有效负载工作得很好。显然,在堆栈上创建一个非常大的“以防万一”缓冲区是不可行的,所以我想在堆上动态地增加缓冲区。以下是我目前正在做的事情:
raw_response = NULL;
// Receive from the Web server
retcode = recv(se
我创建了一个shell,当我给cp命令提供了错误数量的参数(例如参数不足)时,我会收到Linux shell错误消息,如键入cp fork.c将收到的消息,如下所示:
mysh> cp fork.c
cp: missing destination file operand after `fork.c'
Try `cp --help' for more information.
我怎样才能绕过这个错误消息,像Dude那样打印我自己的错误消息!这是一个错误,消息是由cp命令生成的,而不是由内
我有这个代码来打印1536到1791之间的所有字符(阿拉伯语字符)
#包括
void main()
{
int t;
t=1536;
做
{
printf(“%c”,t);
t++;
}
而(tUnicode为(某些)数字0–0x10FFFF赋予了一个含义。我们称这些具有“代码点”含义的数字及其相关含义为“字符”
UTF-8是一种二进制格式,用于将Unicode字符表示为字节序列。它是一种可变长度编码,其中代码点值低于0x80的字符为一个字节,低于0x800的字符为两个字节,低于0x10000的
我有以下代码:
#include <stdio.h>
#include <stdint.h>
int main(void){
char *fmt = "%s";
char *s = "Hello world!\n";
//gcc -m32 test.c
#ifdef __i386__
int32_t ret;
__asm__ __volatile__ (
"push %1\n\t"
"push %2\n\
假设发送方和接收方有一个16大小的缓冲区和一个7大小的窗口
换句话说,每一方都有一个缓冲区,一个数组,可以存储16帧。每个帧都有一个适合16帧缓冲区(数组中的索引)的id。接收器有一个窗口,在任何给定的时间,只允许接受任何顺序的7帧。当缓冲区中最旧的帧被填满时,窗口将滑动一次
我现在的问题是,假设一个帧在途中丢失了,但不知何故使它返回太晚了。接收者得到它太晚了,它实际上填满了帧缓冲区的下一圈
发送方发送帧:0、1、2、3、4、5、6、7
接收机获取帧,并发送一个ACK,确认所有帧都达到7帧(或每
如何读取文本文件并检查其是否存在
#包括
#包括
#包括
#包括
#包括
无效加载(字符*文件名){
文件*输入=fopen(文件名,“r”);
如果(输入){
printf(“:true:”);
}否则{
printf(“:error:”);
}
fclose(输入);
}
字符*提取(字符*名称){
char*input=(char*)malloc(sizeof(char*)*100);
char*extract=(char*)malloc(sizeof(char*)*100);
int i
在c语言中,指针指向的地址包含多少数据(字节,2字节),还是取决于指向的数据类型 这是一个相当有哲理的问题,让我给你三个完全不相容的答案:
指针本身显然正好指向1个字节
根据指针的类型,指针指向数据块的第一个字节,其大小由指针类型定义
指针指向某些数据的第一个字节,其可用长度既不确定也不可从程序内部确定
虽然我认为这三个答案在技术上都是正确的,但第二个是你在C.编程时使用的答案。
编辑
有关“地址”可以、可能或应该是什么的详细信息,请查看@KeithThompson在下面评论中的输入 我不太
我需要使用gcc for RHEL4构建一个wget不完整的可执行文件,该文件将使用特定的OpenSSL共享库。LD_LIBRARY_路径在生成时未设置
通过指定以下内容,这非常简单:
LDFLAGS="-W1,-rpath=/usr/local/ssl/lib -L/my_build_dir/usr/local/ssl/lib"
一切都很好
但这会使我的不完整可执行文件的动态部分中出现RPATH:
Library rpath: [/usr/local/ssl/lib:/my_build_di
标签: C
segmentation-faultbinary-search-tree
在这里,我制作了一个在二叉搜索树(BST)中删除的程序,但在执行时出现了分段错误(内核转储),我认为这是在delete函数中,但不知道我是否删除了delete函数的函数调用,然后它就可以正常工作了,比如查找最大元素,按顺序遍历,但delete不会工作
#include<stdio.h>
#include<stdlib.h>
struct BST{
int data;
struct BST *left;
struct BST *right;
};
s
所以我有两条线。一个做数学,另一个显示数学结果。有时,结果线程首先显示0,而不是有效结果。我怎样才能防止这种情况
void *math (void *arg);
void *result(void *arg);
int a;
int main(int argc, char *argv[]) {
pthread_t mathT;
pthread_t resultT;
pthread_create(&mathT, NULL, math, NULL);
以下(简化的)代码段会导致
error C2099: initializer is not a constant
在这段代码的最后一行:
static const char rowmans_1_width = 16;
...
const char rowmans_width[96] = {rowmans_1_width, rowmans_2_width, rowmans_3_width,...
所以rowmans_1_width被定义为“const”,但编译器仍然抱怨它不是常量。当我把它编译
导致分段错误。有人能帮忙吗?我想你在找这样的东西
strcpy(otherArray[pathIndex], nextFile);
pathArray[pathIndex] = otherArray[pathIndex];
seg错误的原因是没有为数组中的字符串分配任何内存
从strdup手册页:
函数的作用是:返回一个指向新字符串的指针,该字符串是字符串s的副本。新字符串的内存不足
使用malloc(3)获得,并可以使用free(3)释放
注意:您需要释放新创建的副本。很难理
我想以编程方式在C语言的Linux上提交一个qsub作业。这是我正在使用的代码,它不起作用
char command1[50];
chdir("/home/salah/proteins/1L2Y/try2_4changes/_1/");
strcpy(command1, "qsub submit.sh");
system(command1);
当我更改命令时(比如说./test.sh),它工作得很好,可以完成所有事情。所以我认为问题出在qsub部分 错误消息是什么?您会在终端键入什么来执行作业
我试图建立我的代码库,但我得到了错误
“错误:数字常量前应有标识符”
在生成时在生成的c文件中
行号表示rw_offsetof(struct_upthread_mutex_s,1)
我发现pthread\u mutex\s是在pthreadtypes.h中定义的
typedef union
{
struct __pthread_mutex_s
{
int __lock;
unsigned int __count;
int __owner;
我看到不同的人为声明main()编写不同的语句
像
我是说什么时候传论点?它需要什么?何时将int声明为返回类型,何时为void
我刚开始练习编码,当我看到人们编写不同的main()声明时,我真的感到困惑。来自C标准:
5.1.2.2.1程序启动
程序启动时调用的函数名为main。实现声明没有
此功能的原型。它应定义为int返回类型,且不包含
参数:
int main(void){/*…*/}
或者使用两个参数(此处称为argc和argv,但可以使用任何名称)
已使用,因为它们在声明它们的函数中
在大学里,我们执行了以下代码:
int cargaArreglo(int ** A);
int main(){
int * A = NULL;
int i = 0;
int dimension = cargaArreglo(&A);
for( i = 0; i < dimension; i++ )
printf( "[%d]", A[i] );
free( A );
return 0;
}
int cargaArreglo(int ** A){
int i =
我有一个c程序,如下所示:
char* data1 = "test";//Here i have given some dummy value, the value will be evaluated in runtime
char* variable1 = "<Method name=\"data1\">";
char*data1=“测试”//这里我给出了一些虚拟值,该值将在运行时进行计算
字符*变量1=“”;
我在这段代码中面临的问题是,它本身存储的是variable1的值d
最后的ans打印(null),而不是打印字符串:“hello”。谁能解释一下为什么会这样?
我无法识别任何错误。
任何人都可以纠正错误,并帮助我编写一个工作代码。求你了您可以重新定位动态分配的对象。字符串文字具有静态存储持续时间,不能更改。任何修改字符串文字的尝试都会导致未定义的行为
你能做的是以下几点
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *func(char * str)
愚蠢的问题,但我的教授不回复电子邮件,所以我在这里问。
我现在正在准备期末考试,我正在准备期中考试。现在,这真的很愚蠢,因为我两个月前就回答对了这个问题。但就我的一生而言,现在回想起来,我不明白为什么这是一个错误。我显然错过了一些愚蠢的事情,但我不知道是什么。请帮忙
考虑以下程序。此程序编译和运行时没有错误指示,但其输出不正确。它有一个错误。为了使程序产生正确的输出,必须更改哪一行
1 #include <stdio.h>
2 /* Find the minimum valu
释放指针后,指针的值是否变为空
int* p = malloc(sizeof(*p));
free(p);
if(p==NULL)
printf("Null\n");
else
printf("Not null\n");
输出:
Not null
嗯,我想不是
无论如何,今天早些时候我问了一个问题:
在这里查看:
这种情况下的输出:
Null
在这种情况下,释放头1(节点也)后,头1变为空,不是吗
最后,我是否遗漏了一些概念
head1为null,但p不是
我的问题
我试图通过使用“算法简介(第三版)”中的示例创建该列表。但我经历了一些我无法理解的困难。首先,由于printf函数在精确位置的存在,程序的工作正在发生变化。有一个地方需要printf,还有很多地方没有printf。其次,L.nil.next的值在执行与struct相关的操作的每一行代码之后都会发生变化。不幸的是,由于该值不断变化,我无法修复该程序。我会非常高兴,如果有人修复,并迫使它像一个哨兵动态双链接列表的工作
有一个密码
#include <stdio.h>
#include &
标签: C
freeheap-memorydynamic-arraysheap-corruption
我得到教授的帮助,用指针创建一个列表。当我尝试释放内存时,所有函数中的free()都有问题。我一直收到一个信息:
“检测到堆损坏:在0x00D58CE0的正常块(#83)之后。
CRT检测到应用程序在堆缓冲区结束后写入内存。“
我不知道如何修理它。我尝试过不同的方法,但到目前为止没有任何效果。我也不知道去哪里找它了。我知道我的程序还没有得到适当的保护,但这不会影响问题的解决。我想先把它消除,然后再继续。另外,对于在VisualStudio中检测程序内存泄漏,您有什么建议吗?以下是我的函数,完整的
我看过以前关于这个的帖子,他们没有帮我找到我的问题。。。为了保持简短,我正在制作一个函数,它应该逐行读取文本文件(是的,我知道有很多类似的帖子)。但当我通过CMD运行程序时,它会给我以下错误:
Program received signal SIGSEGV, Segmentation fault.
__GI___libc_realloc (oldmem=0x10011, bytes=1) at malloc.c:2999
2999 malloc.c: No such file or dir
在为学校做一些项目时,我遇到了以下问题:
sscanf读取的值与预期值不同
我想读这样的东西:
1 0 185336079 0 0 168231418 -256 0 255 1
2 0 185336079 -256 0 168231418 -256 0 255 2
3 0 185336079 -256 0 168231418 -256 0 255 3
4 0 185336079 0 0 0 0 0 255 4
这是我目前使用的代码:
FILE *fd = open_fd("/proc/fire
我想写一个快速访问的C库,只包含头文件而不使用编译库。为此,我将代码直接包含在头文件中
头文件包含:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#ifndef INC_TEST_H_
#define INC_TEST_H_
void test(){
printf("hello\n");
}
#endif
#包括
#包括
#包括
#ifndef公司测试_
#定义INC_测试_
我试图了解shebang是如何工作的,并且想知道当您在终端提示符下键入node时会发生什么。想知道它是否在某个地方调用了main。我只了解基本知识,已经使用node一段时间了。舍邦#/usr/bin/env node以某种方式读取节点可执行文件,我不确定它是什么或在哪里,以及它从什么开始。然后是实际计算表达式节点并将其指向shebang的代码,但这可能太复杂了,无法询问。非常精确地说,“shebang”只是两个字符。当Unix系统上的文件作为可执行文件调用时(最终通过系统调用),内核会查看其前几
在Windows 8上使用带有TDM GCC 4.9.2的DevCpp。但我认为平台对这个问题并不重要
我知道我们可以使用指针指向单个数据或数据数组。
我已经学习了指向数组的指针,但从未使用过它。一个比另一个有什么优势
示例代码
#include <stdio.h>
int main()
{
int x[2]={10,20};
int *p1= NULL; //simple pointer
int (*p2)[] = NULL; //pointer to an
标签: C
bitdata-representation
我想知道什么最大的奇数整数可以精确地表示为浮点数?以及为什么在本例中表示为浮点的最大偶数整数之间存在差异
我相信这与基2指数2^n-1有关,但是我对C中的数据表示不太熟悉,看不出区别。对于IEEE-754基本32位二进制浮点,可表示的最大奇数是224−一,
对于IEEE-754基本64位二进制浮点,最大可表示奇数整数为253−一,
这是因为格式有24位和53位有效位。(有效位是浮点数的小数部分。)
有效位中的位表示的值根据浮点数的指数进行缩放。为了表示奇数,浮点数的有效位中必须有一位表示20。对
我写了一个程序来寻找公素因子,最大公因子和最小公倍数。我的方法是先找到gcd,然后将gcd分解成素因子。这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int prime(int x) {
int y;
for (y = 2; y < x; y++) {
if (x % y != 0)
continue;
else
retu
我需要使用一个外部构建的C库,在Ada程序中使用三角函数服务进行一些计算。我使用stm32 bb运行时(SFP)做得很好,但在使用默认Ada运行时的本机环境中尝试做同样的事情时,我最终会遇到链接问题。希望我能在这里找到一些帮助
我尝试了几种项目文件(gpr)解决方案的配置,结果总是出现同样的链接错误:
Memory region Used Size Region Size %age Used/opt/gnat/gnat_native/bin/../libexec/gcc/x8
我试图为Ubuntu 18.04上的一些单独编译的测试生成代码覆盖率报告,但遇到了一个奇怪的问题。如果我使用clang 5.0.0进行编译,并将-fprofile instr generate和-fcoverage mapping标志传递给它,它确实可以工作,并且运行编译的测试会导致它吐出一个.profraw文件,我可以使用llvm cov处理该文件并将其转换为覆盖率报告。但是,它似乎跟踪的唯一覆盖范围是测试线束和通过#include直接包含的任何代码,完全忽略链接的代码。例如,如果头文件通过#
在tree.h头中,我声明了“struct privates”以隐藏全局变量。(相关片段)
struct privates;
/*
* a tree
*/
typedef struct tree_node
{
struct tree *left;
struct tree *right;
struct tree_node *left;
struct tree_node *right;
我是c语言新手,想知道如何限制用户输入0作为有效数字。我知道你可以使用if语句,但这对于一件简单的事情来说似乎太多了。因为我记得在python中,可以为用户无法输入特定数字的输入创建验证
printf("Input first number: ");
scanf("%d",&num1);
printf("Input the second number: ");
scanf("%d",&num2);
你不能阻止,但你可以检查
do
{
int scanfresult
嗨
我已经使用Syntastic语法检查器插件有一段时间了,我真的很享受这种体验,除了一个恼人的bug,我似乎不知道如何消除它
每次我尝试在我的C程序中使用NULL时,我都会得到一个由红色“>”表示的错误和一个错误气泡,上面写着“使用未声明的标识符'NULL'[undefined:]”
>问题的屏幕截图链接问题似乎是Syntastic没有访问stddef.h文件,因为它位于gcc文件夹(见上文)的深处,而不在/usr/include中。复制stddef.h并将其放入/usr/include似乎已
我试图获取线程的标识符,但它总是返回一些随机数。
这里有什么不好
// C program to demonstrate working of pthread_self()
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void* calls(void* ptr)
{
// using pthread_self() get current thread id
我试图写一个C程序来计算这个符号。我已经试了几个小时了,但我找不到我的错误。我必须使用三个函数进行组合、阶乘和功率计算。此外,我不能使用其他图书馆。
我检查了组合函数、幂函数和阶乘函数;他们没有问题。我认为问题出在for循环中。例如,当我输入5时,我必须得到100左右,但相反,我得到0.19。
这是我的密码。你能帮我找出我的错误吗?非常感谢
#include <stdio.h>
int factorial(int n)
{
int result_fact = 1, cou
1 2 3 4 5 6 ...
下一页 最后一页 共 3691 页