小编Vij*_*jay的帖子

C中的面试问题和讨论

这是在c的采访中向我提出的问题:

#include<stdio.h>
void main(){
  char *ch;
  ch=fun1();
  printf(ch);
}

fun1(){
  char *arr[100];
  strcpy(arr,"name");
  return arr;
}
Run Code Online (Sandbox Code Playgroud)

我得到了上述程序,并被要求弄清楚上述代码中的问题.下面是我的答案

  • 函数声明是错误的.返回类型应该是 char **
  • 语法printf错了
  • arr 范围仅限于该功能 fun1

然后

采访者:你的解决方案是什么?

:你需要将arr变量作为全局变量并修复上面提到的其余问题.

采访者:你不觉得全球变量是危险的吗?

:是的,因为我们不知道在哪些函数中访问它的位置,有时几乎不可能找到哪个函数改变了值

Ineterviewer:给我一个没有全局变量的解决方案

:????

你的解决方案是什么?任何人都可以指出我所犯的错误!

c global-variables

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

更改静态数组的大小

我们在代码中声明了如下所示的数组.数组将在堆栈本身上处理.我们没有用malloc或分配堆上的任何内存new

char a[20000];
Run Code Online (Sandbox Code Playgroud)

现在我们需要将它改为1800000(180kb)而不是20kb.如下:

char a[1800000];
Run Code Online (Sandbox Code Playgroud)

我们只是用一些数据填充数组.这是一件有效的事吗?

我们可能遇到的问题是什么?我只担心价值似乎太大了.有没有更好的方法来绕过这种需求?

我正在开发solaris unix平台.

c c++

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

unix中的文件创建时间

anybvody可以告诉我为什么unix不存储文件创建时间?这是一个很大的负担,因为它存储修改时间,更改时间和访问时间而不是创建时间?它有什么具体原因吗?

或者是通过使用某种语言(任何编程语言)和一些系统调用,我们可以获得文件创建时间如何?

unix

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

这个正则表达式意味着什么"[^>]*

我遇到了一些正则表达式,这件事令我困惑!我无法理解这意味着什么:

[^>]*
Run Code Online (Sandbox Code Playgroud)

可以anypne请告诉我.

regex

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

连接两个数组的元素并在perl中创建结果数组

基本上我需要的是如果我有两个如下所示的数组:

my @a=("a","b","c");
my @z=("x","y","z");
Run Code Online (Sandbox Code Playgroud)

我想结果数组是:

("a x","b y","c z")
Run Code Online (Sandbox Code Playgroud)

pre条件是数字是两个数组中的元素总是相同的.post condtion命令应该与原始数组顺序相同.我写了一个简单的循环

my $i;
for($i=0;$i<scalar(@a);$i++)
{
push(@result,$a[$i]." ".$z[$i]);
}
Run Code Online (Sandbox Code Playgroud)

以上的作品.但有没有更好的方法呢?

arrays perl

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

如何拆分线并重新排列其元素?

我在一行上有一些数据,如下所示

abc edf xyz rfg yeg udh
Run Code Online (Sandbox Code Playgroud)

我想提供如下数据

abc
xyz
yeg


edf
rfg
udh
Run Code Online (Sandbox Code Playgroud)

以便用换行符分隔打印备用字段.这有什么衬里吗?

unix shell perl awk sed

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

查询unix可执行文件

这可能是一个基本问题,但我想问,因为我不知道它.

如果我有一个二进制文件,它是在HP-UX上创建的,我突然在Linux上使用这个二进制文件,或者让我们说在AIX或sun solaris这样的任何其他平台上,如果我想查看二进制文件的详细信息,请参阅它是在哪个平台上开发的,我怎么能在任何平台上做到这一点?还是有一种通用的方式在unix的所有风格上做它?

unix executable binaryfiles

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

记忆腐败

我正在运行一个小型的c程序:

#include<stdio.h>
int main()
{
char *p;
p = (char *)malloc(10);
free(p);
free(p);
free(p);
printf("\npointer is freed!!\n");
}
Run Code Online (Sandbox Code Playgroud)

基本上我释放已经被释放的记忆.我认为应该导致核心转储!!是不是这样?

但它正在印刷

pointer is freed!!
Run Code Online (Sandbox Code Playgroud)

我错了一些在哪里?

c coredump memory-leaks

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

如何更改putty中的提示

当我在服务器上启动putty时,我得到如下提示:

hpbl802!benjaminb:~ [22]>
Run Code Online (Sandbox Code Playgroud)

如何将此提示更改为

benjamin:~ [22]>
Run Code Online (Sandbox Code Playgroud)

unix shell prompt

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

在指针变量中存储除零之外的整数常量

int main()
{

int *d=0;
printf("%d\n",*d);

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

这很好用.

>cc legal.c
> ./a.out
0
Run Code Online (Sandbox Code Playgroud)

如果我更改语句int *d=0;,int *d=1; 我会看到错误.

cc: "legal.c", line 6: error 1522: Cannot initialize a pointer with an integer constant other than zero.
Run Code Online (Sandbox Code Playgroud)

很明显,它只允许零.我想知道当我们这样做时,内存中发生了什么,这int *d=0使得它成为有效的语法.

我只是出于好奇而问这个!

c c++

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

标签 统计

c ×4

unix ×4

c++ ×2

perl ×2

shell ×2

arrays ×1

awk ×1

binaryfiles ×1

coredump ×1

executable ×1

global-variables ×1

memory-leaks ×1

prompt ×1

regex ×1

sed ×1