我使用以下条件语句读取标准输入
if ((n = read(0,buf,sizeof(buf))) != 0)
当从标准输入输入输入数据时,通常用户在完成时按enter键。但是read()。除了检查buf的内容外,当用户在标准输入上按enter键(不输入任何内容)时,是否有办法使条件求值为false。除了read()之外,我还可以使用其他函数吗
就这一点而言,当输入来自标准输入(stdin)时,read有什么方法来确定输入的结束呢?您最好使用fgets()来完成任务(捕捉用户输入),但即使是f
我有一个文本文件,其中包含用空格分隔的单词。我想从文件中取出每个单词并存储起来。因此,我打开了文件,但不确定如何将单词分配给字符
文件*fp
fp=fopen(“file.txt”,“r”)
//那么我要
char one=文件中的第一个单词
char two=文件中的第二个单词不能在char变量中保存单词。它必须是可以放大的字符串或字符指针
试试这个
charp[10]//假设一个单词最多可以包含10个字符
文件*fp
fp=fopen(“file.txt”,“r”)
fscanf(fp,“%
假设我有一个字符串“qwerty”,我希望找到e字符的索引位置。(在这种情况下,索引将为2)
用C怎么做
我找到了strchr函数,但它返回一个指向字符的指针,而不是索引。只需从strchr返回的内容中减去字符串地址:
char *string = "qwerty";
char *e;
int index;
e = strchr(string, 'e');
index = (int)(e - string);
请注意,结果是基于零的,因此在上面的示例中,它将是2
void myFunc(ch
和之间有什么区别?vWork()是否像fork()一样从我的手册页返回
(来自POSIX.1)vWork()函数
与fork(2)具有相同的效果,除了
如果
由创建的进程
vWork()修改类型为的变量以外的任何数据
用于存储返回值的pid\u t
从vfork()或从
调用vWork()的函数,或调用任何其他函数
在成功调用_exit(2)之前
或一名高管(3)家族成员
功能
vWork()与fork(2)的不同之处在于
父级被挂起,直到
子项终止(通常通过
呼叫出口(2),或
异常情况下,在
在C编程中,我们如何初始化这个int*goo,其中goo是一个图的边列表?一维整数数组通常不能用于直观地存储一个图,即没有某种映射代码
在矩阵/数组中,至少有两种常用的数学表示图形的方法。假设N编号的顶点和M边:
一个nxn。这是一个二维数组,其中每个顶点都有自己的线
一个M尺寸的。这本质上归结为一个边列表,可以实现为一个mx2数组,其中每个边都有自己的行
这两种表示都是直观的二维kxl数组。通过使用额外代码将数据放置在(K*L)x 1一维数组a,可以使用一维数组。例如,要获取原始K x L
标签: C
Unix
shared-libraries
某些Unix共享库在从命令行调用时提供输出,就像它们是可执行文件一样。例如:
$ /lib/libc.so.6
GNU C Library stable release version 2.13, by Roland McGrath et al.
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO w
标签: C
Linux
buffer-overflowsetjmp
我需要帮助来利用jmp_buf结构上的缓冲区溢出
我在堆栈上有以下值(由gdb看到):
第二个是下一个IP(在setjmp之后),但是如果我修改它,我不会更改程序的行为
我注意到,只有修改最后一个流的值,才能更改流(并获得分段)
但是,我无法理解最后一个单词的含义以及如何更改它以获得所需的行为。我正在尝试做同样的事情-我不知道您正在使用什么操作系统,但我发现以下文档
(@)对于simpy描述jmpbuf结构的freebsd:
struct JmpBuf {
int jb_ebx; //i
我正在使用JavaSE-1.6在suselinux11上编写一个Java程序,在使用javac构建时遇到了一个问题
我正在学习有关的教程
到目前为止,他们写了以下内容:
package com.ctest;
class CTest
{
// Native method declaration
native int testCall();
// Load the library
static
{
System.loadLibrary("
我目前正在写一个shell。我执行进程,并利用SIGCHLD信号处理程序在进程完成时进行清理(等待)
一切都在运行——除了我执行使用sudo升级权限的进程。在这些情况下,我从未得到一个SIGCHLD信号——因此我永远不知道进程已经完成执行
当我收到诸如sudo ls之类的命令时,我执行程序sudo,然后将ls作为参数提供。我使用execvp执行此执行
如果我在shell执行了sudo ls之后查看一下ps-aux,我会看到以下内容:
root 4795 0.0 0.0 4496
有人知道prlimit64()C函数的作用吗?我的x86_64 Ubuntu机器上似乎没有它,但它存在于Arch中,我似乎找不到任何人或事物知道它的功能;但它是prlimit()的64位版本(不管是什么意思);中特定于Linux的函数
它似乎对64位应用程序没有用处,因为它与64位环境不可用时的模拟有关。允许您为另一个进程设置或获取限制资源(如文件句柄数、内存等)。它是特定于Linux的
通常,您可以设置的限制取决于\u FILE\u OFFSET\u BITS宏,在所有现代系统上都是64。因此
协调多个进程之间侦听套接字的接受的最佳方法是什么
我在想两种方法之一:
有一个“主”进程,当轮到它开始接受连接时,它将向每个进程发送消息
因此,顺序将是:
主进程将令牌交给工作进程A。工作进程A接受连接,将令牌交还给主进程。主进程向工人B等提供令牌
每个进程都有一个接受线程,该线程将围绕一个共享互斥体旋转。锁定互斥锁,接受连接,释放锁
还有更好的主意吗
当连接进入所有进程时,所有进程都会被唤醒。在接受连接之前,他们会尝试锁定共享互斥锁。锁定互斥锁的人首先接受连接
我认为主解决方案也是一个不
我有一个串行代码,我正试图使用MPI将其转换为并行代码。但是,我似乎无法让MPI\u Scatter()函数在不崩溃的情况下正常工作。该函数在名为cells的数组上循环,并修改一些值
以下是原始序列号:
int accelerate_flow(const t_param params, t_speed* cells, int* obstacles)
{
register int ii,jj; /* generic counters */
register float w1,w2;
我一直在四处寻找答案。我将制作一系列自己的字符串函数,如my_strcmp(),my_strcat(),等等
strcmp()是否处理两个字符数组的每个索引,如果两个字符串的相同索引处的ASCII值较小,则该字符串按字母顺序较大,因此返回0或1或2?我想我问的是,它是否使用字符的ASCII值来返回这些结果
任何帮助都将不胜感激
[修订]
好的,所以我想出了这个。。。除第二个字符串大于第一个字符串外,它适用于所有情况
有什么建议吗
int my_strcmp(char s1[], char s2[
考虑这一行文字:
第一行文字
如果使用字符数组string加载数组中的前十个字符,它将输出为:
First lin'\0'
First包含5个字母,lin包含3个字母。其他两个字符在哪里使用
\0是否被视为两个字符
或者单词之间的空格被认为是一个字符,因此“\0”是一个字符?是的,空格是一个字符。在ASCII编码中,它的代码编号为32。'\0'是,在所有实现中,它实际上是零
'\0'被视为一个字符,因为反斜杠\表示'\0'和'0'都是单个字符,但含义截然不同
请注意,空格由不同的字符表示。两个
此内置函数表示内联函数的所有匿名参数
功能。它只能在内联函数中使用,而内联函数将始终
内联的,从不作为单独的函数编译,例如使用
属性(总是内联的)或属性(gnu内联的)外部内联函数。它只能作为
具有可变参数的其他函数的最后一个参数。这是
用于为变量参数编写小型包装器内联线
函数,但不希望使用预处理器宏。例如:
extern int myprintf (FILE *f, const char *format, ...);
extern inline __attribute_
是否可以优化功能:
MD5_Update(&ctx_d, buf, num);
如果您知道buf只包含零
或者这在数学上是不可能的
对于SHA1也是如此。加密散列实际上应该对输入的微小变化产生显著的输出变化,请参阅。听起来你在寻找一些散列数据和一些预先填充了零的散列数据之间的关系。通过设计,输入中的这种变化应该会产生不明确相关的输出
编辑:为了直接回答你的问题,通过设计“密钥或明文中的一个小变化应该会导致密文中的一个剧烈变化”,这意味着这在数学上是很难做到的。你可能会得到一些加速,但这
我在C中有一个递归函数,我希望返回的结构指针成为函数中的新结构。我对返回的结构有问题,因为它没有更改。这是我代码的结构:
struct location_t{
int x,y;
location_t * next;
int dir;
}
location_t * recursive_foo(location_t * loc, maze_t * m){
int x = loc->x;
int y = loc->y;
int dir = lo
.h文件:
#ifndef _WORTHLESS_LIB_H_
#define _WORTHLESS_LIB_H_
typedef struct somestuff stuff_type;
#endif
.c文件:
#include "WorthlessLib.h"
struct somestuff
{
bool didOne;
bool didTwo;
};
当我开始编译时,我得到以下输出:
Error 1 error C2016: C requires th
我在项目中看到了这段代码
b的类型为void*:
void *b = ...;
int a = (int) (unsigned long) b;
这句话毫无意义吗?我的意思是,它在所有情况下都与a=(int)b相同?这可能避免了64位Unix系统上的编译器警告,其中unsigned long是一个64位的量,因此足以容纳指针,但int是一个32位的量,不足以容纳指针。转换为(无符号长)保留地址的所有位;随后对int的强制转换将丢弃地址的高阶32位,但默认情况下不会得到警告
证明:
int ma
我编写了以下C程序:
int main(int argc, char** argv) {
char* str1;
char* str2;
str1 = "sssss";
str2 = "kkkk";
printf("%s", strcat(str1, str2));
return (EXIT_SUCCESS);
}
我想连接这两个字符串,但它不起作用。strcatconcatsstr2到str1
您将获得运行时错误,因为没有为串联正确分配s
当我从另一个发现卡通过USART传输数据时,我有一个关于读取STM32F4发现卡上的RX寄存器的问题。当数据从card2传输时,我只想读取card1上的RX寄存器一次,然后我想清除它,以便读取card2传输的下一个数据
什么C代码可以帮我做到这一点?我可以使用什么标志?读取RX寄存器后,如何清除它?您必须使用另一个寄存器来确定RX是否有有效数据
假设您使用ST的外设库(您应该!),使用USART\u-GetFlagStatus()函数调用USART\u-FLAG\u-RXNE(表示“RX寄存器不
我正在尝试读取ASCII文本文件并将其写入二进制文件。文本文件的大小不受限制。首先,我试着在写之前先阅读文本文件。然而,我不断地犯分段错误。我不明白是什么引起了这个问题。即使使用gdb,我仍然无法解决这个问题。请告知
代码:
代码中的问题是您有一个指针:
FileData** input;
您正在使用该指针,即使它尚未初始化为指向任何有效内存
由于您在读取文件后立即将数据写入标准输出,因此可以使用:
FileData input;
while( fscanf(infile,"%d %lf %5
我在尝试实现一个小hashmap表时遇到了一个问题
地图.h
地图c
我最初是在pelles c中开发的,但在遇到问题时,我转到vs2013进行调试器。然后在vs2013中,程序会在add函数处崩溃,但在pelles c中不会。我假设它与我计划稍后扩展的动态数组有关
有谁能告诉我,当我试图访问动态数组的索引时,为什么程序会崩溃?在add function中,您正在检查表,直到到达空指针:
while (context[i] != N ...
但分配此表时,您从未将任何指针设置为NULL:
ma
我正在尝试将文本文件复制到新文件。我在想,如果我想做得聪明点,我只要把所有的东西都复制成二进制,这样副本就会和第一个一模一样。然而,我在新文件中的角色很奇怪
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char * argv[])
{
FILE * fporgi, * fpcopy;
if((fporgi = fopen(arg
我有一些理论/实践问题,目前还不知道如何管理,这里是:
我创建了一个模型,当一个模型存在时,我能够找到它,当它不是C语言中的问题时,我能够用遗传算法证明这个矛盾
SAT问题基本上类似于此类问题:
我的目标是使用此解算器在许多不同的问题中找到解决方案。基本上,我将不同的问题转化为SAT,用我的解算器解决SAT,然后将解决方案转化为原始问题可接受的解决方案
我已经在N*N数独和N皇后问题上取得了成功,但我的新目标是:将类调度问题简化为SAT,但我不知道如何将类调度问题形式化,以便在SAT之后轻松地进
我看不出我的逻辑在代码中哪里有缺陷,出于某种原因,它在I中添加了1,即使ch不等于32
int main(void)
{
int ch;
float i, j;
printf("Enter a sentence: ");
for (i = 1, j = 0;;)
{
ch = getchar();
if (ch == '\n' || ch == EOF)
break;
if (
目标:将数据序列化为JSON
问题:我事先不知道整数有多少个字符长
我认为这样做的一个好方法是使用sprintf()
当然,我可以使用堆栈变量,比如chara[256],而不是no\u buff
问题:但是C语言中是否有一个实用程序,可以像unix/dev/null那样进行一次性写入?
Smth是这样的:
#define FORGET_ABOUT_THIS ...
size_t length = sprintf(FORGET_ABOUT_THIS, "{data:%d}",12312);
p、
从我目前发现的情况来看,很明显,为64位体系结构编译的程序使用的指针RAM是32位替代方案的两倍
这是否意味着为64位编译的代码的平均使用量是32位版本的两倍
我有点怀疑,但我想知道真正的开销是什么。我假设小类型,如short、byte和char在64位体系结构中大小相同?不过,我对字节不太确定。考虑到许多应用程序使用大型字符串(如web浏览器等),在大多数实现中,这些字符串主要由char数组组成,因此开销可能不会太大
因此,即使像int和long这样的数字类型在64位上更大,它是否会对RAM的
下面的程序没有像我预期的那样工作。它应该读取具有特定格式的文件,然后写入具有相同值的文件
加载了sample.txt,输出为sample\u color.txt,请参见下面的链接
结果,文件的内容不一样
让我知道如何解决它
输入文件:sample.txt
输出文件:sample_color.txt
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
/*********************************
这个程序的输出在开头给出了一个特殊的字符。原因是什么
#include<stdio.h>
#include<conio.h>
#include<string.h>
main() {
int i, j,count=0,nl;
char str2[100];
char str1[100];
char str[100];
char init[8];
char final[8];
//clrscr();
嗨,我需要写一段代码,使用递归获取字符串和字符,如果字符串不包含字符,则返回-1,如果包含字符,则返回字符的位置
这是我的代码:
int str_contains(char* string, char ch)
{
if(*string==ch) return 0;
if(*string=='\0') return -1;
int check =str_contains(string+1,ch)+1;
if(check==-1) return -1;
我需要使用C语言读取以下文件。我尝试了以下代码:
FILE *f;
char fileExtract[100];
if ( (f = fopen("input.txt", "r")) == NULL )
{
error_disp((char *)"input.txt open error!");
}
else
{
f= fopen("input.txt","r+");
long i = 0;
while((fileExtract[i]=getc(f))!=
对不起,我在编译代码时遇到了一个问题,我不知道要解决的错误是什么:
“6:26:错误:RequestFormMember'txt'位于非结构或
工会“
有人能帮我吗
我给你留下我的密码:
#include <stdio.h>
int calcular(char nombre[]){
FILE *fichero; int contar, maximo = 0;
char caracter;
fichero = fopen(fichero.txt,"r");
我正在开发一个实践OpenGL程序。我基本上是想展示一个金字塔。我粘贴了到目前为止的代码。我遇到的问题是,当我打电话给GluLook时,我的屏幕变得完全黑了。这对我来说没有意义。我的金字塔有一个三角形,其尺寸限制在一个大小为(1,1,1)的盒子内,并且位于原点。因此,如果我把眼睛放在远处,如果(10,10,10),看(0,0,0),为什么我看不到金字塔。当我发表评论时,我能看得很清楚
#include <GL/glut.h>
#include <stdlib.h>
#in
我正试图从服务器上为file1.txt中的不同id代码获取一些数据。如果我使用字符串literald.id=“ABC”调用fetchData(&d)效果很好,但如果我从文件中读取每个id后使用变量数组[idx]则不起作用。有人能告诉我我做错了什么(不知道fetchData()的内部结构)吗?我正在学C,请耐心点
file1.txt的内容如下所示:
ABC
DEF
...
我的代码如下:
/* #include "myapi.h" */ //fetchData
#include <
标签: C
File
linear-equation
我正在编写一个程序,从这样的文件中读取线性方程,并使用矩阵求解:
3x+2y-2z=9
-2x+9y+12z=23
4x-7y+9z=45
该文件应该包含n个带有n个变量的方程,如何仅从上述方程中获取数字和符号以存储在二维动态整数数组中
因此,输出将是(类似于以下内容):
感谢高级使用fscanf,“d”修饰符处理有符号整数,这意味着它将处理输入数字,无论前面是+还是-,请尝试以下代码:
#include <stdio.h>
int main(void) {
int x,
我试图从C代码调用DynamoDB低级API。这是我的密码
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
struct curl_slist *chunk = NULL;
chunk = curl_slist_append(chunk, "
为了理解CRC16 CCITT的解释,我遇到了术语“截断多项式”。比较单字节消息的长时间计算和相应的C代码,我发现poly的宏定义与上面的计算示例不匹配。在C代码中,多项式是0x1021,而在上面的计算示例中,使用的多项式更大,0x11021
他们使用术语截断多项式来表示:0x1021。他们使用什么模式将这个0x1021扩展到这个0x11021?0x11021表示从F2[x]开始的多项式p=x^16+x^12+x^5+x^0。消息(连同初始值和增广)也用多项式表示。CRC基本上就是消息模多项式p
标签: C
multidimensional-array Input
所以我不得不第一次使用2d阵列,我很困惑。
我想将多行(如示例(输入)中的行)加载到该数组中
123456
654321
123456
数组[0][0]上的值应为1,数组[1][0]-6。。
最重要的是线的长度是随机的,但每一行的长度都是一样的,我需要这个数字以备将来使用
最好的方法是什么?谢谢你的建议,请不要对我苛刻
谢谢这里有一个非常快速而肮脏的解决方案。当我处理这个问题时,您还没有指定数据类型或最大行长度,所以这适用于任何行长度。使用二维数组时,需要注意的重要部分是嵌套的for()循环。
在C语言中,没有任何外部库,有没有办法找到数字的第n个根?我正在编写裸机代码,因此没有操作系统。另外,这里没有完整的C。您可以为第n根编写这样的程序。这个程序是平方根的
int floorSqrt(int x)
{
// Base cases
if (x == 0 || x == 1)
return x;
// Staring from 1, try all numbers until
// i*i is greater than or equal
标签: C
Linux
buffer-overflowstrcat
我正在做一些关于缓冲区溢出的练习,目前我还不知道如何进一步处理其中一个。这是程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/syscall.h>
void reverb(char *msg, unsigned int len)
嗨,我对C编程有点陌生。面对生产者和消费者的问题。当我尝试运行下面的代码时,我会遇到分段错误(内核转储)。请告诉我哪里出了问题。但此代码适用于一个使用者,但对于多个使用者,它会抛出错误
代码:
#包括
#包括
#包括
#定义最大值20
#定义MAXNTHREADS 5
作废*产生(作废*参数);
作废*消耗(作废*参数);
/*线程共享的全局*/
int nitems=MAXNITEMS;/*生产者和消费者只读*/
int buff[MAXNITEMS];
内部信号;
结构{
pthread_m
定义了Linux的C级和程序集调用约定
我想编写一个通用thunk,验证函数是否满足被调用方保留寄存器上的ABI限制,并(可能)尝试返回一个值
因此,给定一个像intfoo(int,int)这样的目标函数,在汇编中编写这样的thunk非常容易,比如1:
现在,我当然不想为每个调用编写单独的foo\u thunk方法,我只想要一个通用方法。这个函数应该使用一个指向底层函数的指针(比如在rax中),并使用一个间接调用call[rax],而不是call foo,但在其他方面是相同的
我无法理解的是如何
以下代码(Windows,C++)设置当前区域设置并检索格式化的短日期字符串,该字符串根据区域设置的短日期格式“%C”进行格式化
假设给定日期和地点为“2012年1月31日”。
这对应于日期格式“%d/%m/%Y”,尽管已指定“%c”
是否有一种方法可以获取格式字符串本身,即给定区域设置的“%d/%m/%Y”?在langinfo中有一个调用来完成此操作
作为一个简单的演示
#include <stdio.h>
#include <langinfo.h>
int main
如果我出于任何原因遍历我的链接列表,打印、排序等。。。我必须向后重新遍历它以重置头部。有更好的方法吗
struct list_node {
struct list_node *next;
struct list_node *prev;
char word[30];
int word_count;
};
typedef struct list_node list_node;
struct list {
struct list_node * head;
int size;
标签: C
language-lawyercode-analysisbit-shiftsplint
对于以下程序:
int main(无效)
{
int值=2;
int结果=值>>1U;
返回结果;
}
…夹板3.1.2给出了警告:
splint_test.c: (in function main)
splint_test.c:4:18: Variable result initialized to type unsigned int, expects
int: value >> 1U
To ignore signs in typ
我的服务器刚刚连接到一个客户机,然后就断开连接,而客户机试图向一个关闭的套接字发送一个整数(scanf是为了确保服务器先关闭它)。我使用send with MSG_NOSIGNAL并检查EPIPE,但未设置标志。我认为结果的打印值应该是-1或0,但它等于1,因为我正在已经关闭的套接字上写入。有人能解释一下吗
服务器代码:
#define QUEUE_LENGTH 5
#define PORT_NUM 10002
#define BUFFER_SIZE 512000
int ma
根据C99,ftell的原型是:
long int ftell(FILE *stream);
根据我了解的情况,应该是以下内容:
fpos_t ftell(FILE *stream);
为什么呢
从§7.19.1-2开始
fpos\u t这是一种对象类型,而不是数组类型,能够记录唯一指定文件中每个位置所需的所有信息
我理解应使用fpos\u t记录文件中的位置。因此,返回文件中位置的ftell应为该类型。相反,它是:
signed
类型为long,可能太小或太大,无法访问特定体系结构上的文
我知道数组名被转换为指针。经常使用的一个术语是,它们衰减为指针
然而,对我来说,指针是一个内存区域,它将地址保存到另一个内存区域,因此:
int a[] = {1, 2 ,3};
可以这样画:
int *p = a;
但是a本身并没有指向另一个内存区域,而是内存区域本身。
因此,当编译器将其转换为指针时,它是否将其保存(如p)在内存或内存中的某个位置
这是一种隐式转换?C有对象和值
值是一个抽象的概念,它是某种意义,通常是数学上的。数字的值为4、19.5或−3.地址的值是内存中的位置。结构的
该程序使用c从sqlite中的数据库检索整个表
数据库表
"1" "Audi" "52642"
"2" "Mercedes" "57127"
"3" "Skoda" "9000"
"4" "Volvo" "29000"
"5" &quo
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 6814 页