我想用一维数组表示一个二维数组.函数将传递两个指标(x,y)和要存储的值.这两个标记代表一维阵列的单个元素,并相应地设置它.我知道1D数组需要有arrayWidth×arrayHeight的大小,但我不知道如何设置每个元素.
例如,我如何区分(2,4,3)和(4,2,3)?我尝试将数组设置为x*y,但是2*4和4*2将导致数组中的相同位置,我需要它们不同.
我意识到要成为更好的程序员,你需要编程!显然,练习越多,你就越好.
我的问题是这个.我目前在大学,我发现我的课程负担有点令人生畏,而且我没有很多空闲时间.我认为我不能真正承担一个大项目,特别是我认为我不会有动力去看它,我会更容易继续推迟,以支持应有的工作.学校.
但我还是想练习.所以我正在寻找任何可以在相当短的时间内完成编程挑战的资源.理想情况下,我可以在不到10小时的工作时间内完成这项工作(每天工作超过一小时),如果不是更小的话.
我听说过Google Code Jam,但我不确定它指定的程序的长度,也不确定技能水平.
有没有人有建议?甚至可能有关不同功能的教程纲要可能也很有用.例如,关于文件IO的教程是值得的(如果我还不知道的话),即使它可能是一个相当小的主题.
我的任务是创建一个为结构动态分配内存的程序.通常我们会用
x=malloc(sizeof(int)*y);
Run Code Online (Sandbox Code Playgroud)
但是,我对结构变量使用什么?我认为不可能这样做
struct st x = malloc(sizeof(struct));
Run Code Online (Sandbox Code Playgroud)
有人可以帮帮我吗?谢谢!
我试图从文本文件中读取文本.我需要帮助搞清楚文件结束的时间.如何在Java中确定这一点?
FileInputStream istream = new FileInputStream("\""+filename+"\"");
Scanner input = new Scanner(istream);
while(EOF != true)
{
....
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个C函数,它接受一个名为'buffer'的字符串,并解析它,它将匹配关键字并使用它来分配结构中的值.
但是,我想完全忽略一些关键字.
该程序解析VCard文件(.vcf,虚拟名片).
以下是可能提供的示例行缓冲区:
FN;CHARSET=UTF-8:David Celery
Run Code Online (Sandbox Code Playgroud)
FN是我感兴趣的关键词,而David Celery是与FN相关的值.
然而,CHARSET = UTF-8是我根本不关心的事情.
所以我的问题是,有没有办法让我扫描我的缓冲区,只需用'"替换'CHARSET = UTF-8',这样我就不用担心解析它(以及我想要的其他类似关键字)忽视).
谢谢,
使用GDB,我发现在尝试此操作时出现了分段错误:
strcat(string,¤tChar);
Run Code Online (Sandbox Code Playgroud)
鉴于该字符串被初始化为
char * string = "";
Run Code Online (Sandbox Code Playgroud)
和currentChar是
char currentChar = 'B';
Run Code Online (Sandbox Code Playgroud)
为什么会导致分段错误?
如果strcat不能用于此,我怎么能将char连接到一个字符串?
我之前问了一个关于使用malloc定义结构的问题.这是大多数人给出的答案:
struct retValue* st = malloc(sizeof(*st));
Run Code Online (Sandbox Code Playgroud)
我向朋友展示了我的代码,我们遇到了绊脚石.有人可以解释为什么这段代码有效吗?从我的观点来看,当你对它进行malloc时没有定义*st,因此那里可能存在任何类型的垃圾.它应该是malloc(sizeof(struct retValue))
谢谢你的帮助
我想比较两个字符串.一个存储在一个文件中,另一个从用户(stdin)中检索.
这是一个示例程序:
int main()
{
char targetName[50];
fgets(targetName,50,stdin);
char aName[] = "bob";
printf("%d",strcmp(aName,targetName));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在此程序中,strcmp
输入时返回值-1 "bob"
.为什么是这样?我认为他们应该是平等的.我怎样才能得到它们呢?
有没有一种简单的方法将字符转换为二进制表示?
我试图将消息发送到另一个进程,一次一个位.因此,如果消息是"Hello",我需要先将"H"转换为二进制,然后按顺序发送这些位.
存储在阵列中将是优选的.
感谢任何反馈,伪代码或实际代码将是最有帮助的.
我想我应该提到这是为了让学校的作业能够学习信号......这只是学习它们的有趣方式.SIGUSR1用作0,SIGUSR2用作1,并且重点是从一个进程向另一个进程发送消息,假装环境正在锁定其他通信方法.
我正在进行一项任务,该任务使用信号在两个进程之间传输二进制消息,目的是了解信号(这确实是一种奇怪的用法).
在我的程序中,两个进程传递代码,然后一个消息传递给另一个.SIGUSR1代表0,SIGUSR2代表1.想法是发送消息的进程将使用kill函数与任何SIGUSR来获取消息,接收进程将有一个信号处理程序来解释代码.
所以这就是问题所在.我有发件人启动.它在等待代码发送时休眠.接收方发送两个SIGINT来表示"密码",pidof(8)
用于查找发送方的pid.
一旦发送者的信号处理程序读取了这些信号,识别出它是正确的密码,它就会继续发送消息.
接收器现在经历了一些功能,并且每秒钟都在等待通过中断传递每个位.问题是,这种情况从未发生过.
我已将其设置为发送方正在发送一个位(在这种情况下为0),如下所示:
kill(washingtonPID,SIGUSR1);
Run Code Online (Sandbox Code Playgroud)
其中washingtonPID是接收器的PID,我已经验证这是正确的PID.
接收者的处理程序如下所示:
//IN MAIN
signal(SIGINT,bitReceiver);
signal(SIGUSR1,bitReceiver);
signal(SIGUSR2,bitReceiver);
//OUTSIDE MAIN
void bitReceiver(int signum)
{
if(signum == SIGUSR1)
{
fprintf(stderr,"SIGUSR1 - 0");
bit = 0;
}
else if (signum == SIGUSR2)
{
fprintf(stderr,"SIGUSR2 - 1");
bit = 1;
}
else //sigint
raise(SIGINT);
return;
}
Run Code Online (Sandbox Code Playgroud)
其中bit是全局变量.它最初设置为-1.
这是读取位的函数:
int receiveBit()
{
while(bit == -1)
{
sleep(1);
}
fprintf(stderr,"%d",bit);
int bit2 = bit;
bit = -1;
return bit2;
}
Run Code Online (Sandbox Code Playgroud)
所以基本的运行是这样的:在代码从接收器发送到发送器之后,发送器开始向接收器发送USR1和USR2的终止信号,最终应该形成二进制消息.
接收器只是在这一点等待,每秒钟都在睡觉.当它被中断时,处理程序将位设置为0或1,将其踢出睡眠状态,打印该位并返回它.
如果我让两个程序正常运行,接收器就处于休眠状态,并且永远不会调用处理程序(即使我可以看到其他进程正在进行调用).
如果我停止发送器,并手动发送杀戮信号,我可以发送一个,也许两个信号,两者都正确处理.之后,我收到一条消息,如"用户信号2",打印到终端.这不是我的程序中的东西,程序立即停止.
任何关于为什么我的处理程序没有被使用的见解,以及为什么我不能手动发送超过一个或两个信号将非常感激.
谢谢你的时间.
编辑:似乎人们对此感到难过.有没有我可以尝试的调试技巧?