小编CS *_*ent的帖子

Vim变量语法高亮显示

我想更改我的vim配置文件,以便只突出显示我声明的变量,而不是关键字.本文展示并解释了我的意思:替代语法突出显示

我是vim的初学者(我从未更改过默认的配置文件).有人能指出我正确的方向吗?

syntax vim syntax-highlighting highlight vim-syntax-highlighting

11
推荐指数
1
解决办法
5353
查看次数

scanf()可变长度说明符

如何使用变量指定scanf()应读入的最大字符数?

例如使用printf()你可以像这样使用*

#define MAXVAL 5
printf("Print at maximum MAXVAL chars: %.*s\n", MAXVAL, "myStringHere");
Run Code Online (Sandbox Code Playgroud)

这只会打印5个字符,如何才能scanf在MAXVAL中读取?MAXVAL必须用作长度说明符.我不能简单地做

scanf("%5s", string);
Run Code Online (Sandbox Code Playgroud)

现在我只能想到读入一个大数组scanf然后ssprintf用来将字符串存储到我的长度有限的字符串中.然而,使用长度说明符会更容易.

c scanf

11
推荐指数
2
解决办法
8381
查看次数

CLion在独立的系统终端中运行程序

我有一个ncurses程序,我想使用CLion进行交互式调试.问题是当我在CLion中运行程序来调试它时,运行程序的内置控制台不能ncurses正确显示程序的输出.

我希望程序在我的系统终端中运行,这样我可以在使用CLions调试器调试程序时正确看到输出.

有没有办法做到这一点?

c++ debugging terminal ncurses clion

11
推荐指数
2
解决办法
6540
查看次数

C中的空字节和数组

如果我声明一个像10个字符的char数组那么...

char letters[10];
Run Code Online (Sandbox Code Playgroud)

我是否创建了一组内存位置,从索引0-9表示为字符,然后第10个索引是空字节?

若是这样意味着我真的在内存中为数组创建11个位置(0到10),最后一个元素是空字节,或者我在内存中有10个位置(0到9)然后C在空格中添加空字节一个新位置(所以数组比我声明的长1个字节)?

谢谢

c arrays

10
推荐指数
2
解决办法
1万
查看次数

Putchar和Getchar在C中

我正在阅读K&R的The C Programming Language,并对putchar和getchar感到困惑.我制作了一个程序,你输入10个字符,程序将它们打印回屏幕.

#include <stdio.h>

int main() 
{
    int i;
    int ch;
    for(i = 0; i < 10; i++)
    {
        printf("Enter a single character >> ");
        ch = getchar();
        putchar(ch);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望得到这样的输出:

Enter a single character >> a
a
Enter a single character >> b
b
Run Code Online (Sandbox Code Playgroud)

...等等10次,但这是我得到的输出:(进入2个字符后我停止了)

Enter a single character >> a
aEnter a single character >>
Enter a single character >> b
bEnter a single character >>
Enter a single character >>
Run Code Online (Sandbox Code Playgroud)

不确定为什么我的输入字符与固定字符串组合并被输出.

另外,我不太清楚为什么使用int来存储字符.

c kernighan-and-ritchie putchar getchar

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

功能指针 - 为什么此代码崩溃?

#include <stdio.h>  
int main(void)
{
  int (*fp)(void); 
  printf("Loopy.\n");
  fp = &main; //point to main function
  fp(); //call 'main' 

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

而不是无限地执行循环,"循环"在我的机器上执行大约10-20秒,然后获得标准的Windows应用程序崩溃报告.为什么是这样?

编译器:GCC IDE:Code :: Blocks OS:Win7 64bit

在此输入图像描述

c crash pointers function-pointers function

5
推荐指数
1
解决办法
685
查看次数

C中的符号常量(#define语句)

在阅读了K&R的C语言编程语言之后,我遇到了#define符号常量.我决定定义......

#define INTEGER_EXAMPLE 2
#define CHAR_EXAMPLE 2
Run Code Online (Sandbox Code Playgroud)

...所以我的问题是C如何知道我是在定义int还是char类型?

c

4
推荐指数
2
解决办法
1620
查看次数

添加指针地址 - 合法性

由于将两个指针放在一起是非法的,这段代码片段有效吗?

struct key *low = &tab[0]; 
struct key *high = &tab[n]; 
struct key *mid; 

while (low < high) 
{ 
  mid = low + (high-low) / 2; //isn't this adding pointers?


//code continues...
Run Code Online (Sandbox Code Playgroud)

while循环中的第一个语句似乎将两个地址加在一起,这是如何合法的?

此代码来自K&Rs的C编程语言(第122页)

c pointers

4
推荐指数
1
解决办法
946
查看次数

理解char*,char []和strcpy()

我的理解如下:

  • char *指向一个字符串常量,修改它指向的数据是未定义的.但是,您可以更改指向的位置.

  • char[] 指内存块,您可以更改其内容但不能更改其内容.

  • strcpy(dest, src)复制srcdest.

我的问题是,这是不正确的使用strcpy()dest作为一个char * 在已经指向的东西(我beleive旧的内容将被覆盖strcpy()-这是不确定的行为)?

例如:

char *dest = malloc(5);
dest = "FIVE";

char *src = malloc(5);
src = "NEW!";

strcpy(dest, src); /* Invalid because chars at dest are getting overwritten? */
Run Code Online (Sandbox Code Playgroud)

c arrays string pointers strcpy

4
推荐指数
1
解决办法
6309
查看次数

sprintf在哪里存储其输出?

如果我有以下代码,那么句子在哪里sprintf存储?

它是存储在提供的100个字节malloc中还是存储在其他地方,store指针现在指向新位置?

char *store = malloc(100); 
int num = 77;
sprintf(store, "the number was: %d", num);
Run Code Online (Sandbox Code Playgroud)

c printf

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