小编Jen*_*ens的帖子

如何读取未知长度的输入字符串?

如果我不知道这个词有多长,我就不会写char m[6];,
这个词的长度可能是十到二十个.如何使用scanf键盘输入?

#include <stdio.h>
int main(void)
{
    char  m[6];
    printf("please input a string with length=5\n");
    scanf("%s",&m);
    printf("this is the string: %s\n", m);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

请输入一个lenght = 5 的字符串
你好
这是字符串:hello

c scanf

57
推荐指数
5
解决办法
13万
查看次数

C:结构定义中指向struct的指针

如何在此结构的定义中指向下一个结构的指针:

typedef struct A {
  int a;
  int b;
  A*  next;
} A;
Run Code Online (Sandbox Code Playgroud)

这是我第一次写它但它不起作用的方式.

c struct pointers

51
推荐指数
5
解决办法
7万
查看次数

第一个C编译器是如何编写的?

第一个C编译器是用C本身编写的吗?然后,它是如何执行和编译的?或者,这个编译器是用汇编语言编写的吗?

c compiler-construction assembly

50
推荐指数
3
解决办法
4万
查看次数

ZSH:每张cd后自动运行ls

所以我现在已经让ZSH做了所有这些很酷的东西,但真正令人敬畏的是,如果我能在每次调用'cd'之后隐式运行'ls -a'.我想这必须放在.zlogin文件或.aliases文件中,我只是不确定最佳解决方案是什么.思考?参考资料?

zsh

40
推荐指数
3
解决办法
1万
查看次数

c array - warning:format不是字符串文字

我正在尝试学习C,但我已经遇到了问题.我认为它是微不足道的,但我需要知道它.我已经写了:

#include <stdio.h>
#include <string.h>

int main() 
{
    char str_a[20];

    strcpy(str_a, "Hello, world!\n");
    printf(str_a);
}
Run Code Online (Sandbox Code Playgroud)

一旦我尝试使用以下命令编译它:gcc -g -o char_array2 char_array2.c我收到错误说:

char_array2.c: In function ‘main’:
char_array2.c:9:2: warning: format not a string literal and no format arguments [-Wformat-security]
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

c compiler-warnings

40
推荐指数
3
解决办法
7万
查看次数

是否存在更新的"vimtutor"?

vim附带了一个很好的内置交互式教程.您只需运行以下命令即可访问本教程:

 $ vimtutor
Run Code Online (Sandbox Code Playgroud)

它非常易于使用,因为它可以为基本命令创建工作案例.有更高级的教程吗?有没有人想过建立一个帮助他们将他们的VIM技能提升到新的水平?vim的大多数教程和备忘单网站只显示命令,但不一定是特定用途和示例.

那里有高级教程吗?这是一个可以作为开源文档的项目类型,每个人都可以添加示例吗?像Vim Interactive Wiki或类似于具有内置正则表达式测试程序的RegEx站点.

vim open-source interactive project

35
推荐指数
3
解决办法
2万
查看次数

是什么让C,宏或枚举更好?

我很困惑何时使用宏或枚举.两者都可以用作常量,但它们之间有什么区别,哪一个有什么优势?它是否与编译器级别有关?

c macros enums

34
推荐指数
5
解决办法
2万
查看次数

任何人都可以在fork()之后解释关于'文件描述符'的简单描述吗?

在"Unix环境中的高级编程",第2版,作者:W.Richard Stevens.

第8.3节fork函数.

这是描述:

父和子共享相同的文件偏移量很重要.

考虑一个分叉孩子的过程,然后等待孩子完成.假设两个进程都写入标准输出作为其正常处理的一部分.如果父级的标准输出重定向(可能是shell),则当子级写入标准输出时,子级必须更新父级的文件偏移量.

[1.这是什么意思?例如,如果父项的std输出被重定向到'file1',那么子项写入后子项应该更新什么?parent的原始std输出偏移量或重定向输出(即file1)偏移量?不能晚了,对吧?

[2.更新是如何完成的?由子显式,由OS隐式地,由文件描述符本身?在fork之后,我认为父母和孩子走自己的路,并拥有自己的文件描述符COPY.那么孩子如何更新偏移到父方?]

在这种情况下,孩子可以在父母等待时写入标准输出; 在孩子完成后,父母可以继续写入标准输出,知道其输出将附加到孩子写的任何内容.如果父级和子级没有共享相同的文件偏移量,则此类交互将更难以完成,并且需要父级的显式操作.

如果父节点和子节点都写入相同的描述符,而没有任何形式的同步,例如让父节点等待子节点,则它们的输出将被混合(假设它是在fork之前打开的描述符).虽然这是可能的,但这不是正常的操作模式.

在fork之后处理描述符有两种正常情况.

  1. 父母等待孩子完成.在这种情况下,父级不需要对其描述符执行任何操作.当子进程终止时,子进程读取或写入的任何共享描述符将相应地更新其文件偏移量.

  2. 父母和孩子都有自己的方式.这里,在fork之后,父关闭它不需要的描述符,并且子进行相同的操作.这样,既不会干扰对方的开放描述符.网络服务器经常出现这种情况."

[3.当调用fork()时,我理解的是那个子得到了父有什么的COPY,在这种情况下是文件描述符,并做了它的事情.如果任何偏移更改为父和子共享的文件描述符,则只能因为描述符记住偏移本身.我对吗?]

对不起,我对这些概念不太了解.

有帮助吗?谢谢.

c unix fork file-descriptor

33
推荐指数
2
解决办法
3万
查看次数

如何在参数位于中间的位置创建别名?

我正在尝试定义一个别名,其中参数插入到中间,而不是附加到末尾.

我尝试像这样定义它:

alias grep_logs="grep $1 */log/*.log"
Run Code Online (Sandbox Code Playgroud)

其中$ 1是grep_logs的第一个参数,例如:

grep_logs foo
Run Code Online (Sandbox Code Playgroud)

将执行以下命令:

grep foo */log/*.log
Run Code Online (Sandbox Code Playgroud)

但相反,它运行命令:

grep foo */log/*.log foo
Run Code Online (Sandbox Code Playgroud)

这导致错误:

grep: foo: No such file or directory
Run Code Online (Sandbox Code Playgroud)

是否可以使用别名来执行此操作,还是需要定义函数?

unix bash shell alias sh

31
推荐指数
3
解决办法
1万
查看次数

程序集vim语法高亮

默认的汇编语法文件不能很好地工作并在网上搜索气体组件我没有发现任何关于vim的气体(AT&T)语法文件.有没有人发现这个?我无法编写自己的语法文件.

http://img168.imageshack.us/img168/46/nasm.png ft = nasm

http://img160.imageshack.us/img160/5857/asm.png ft = asm(默认)

http://img164.imageshack.us/img164/8476/tasm.png ft = tasm

vim x86 assembly vim-syntax-highlighting

27
推荐指数
3
解决办法
3万
查看次数