- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我的实验室考试实现 CRC 的 C 程序。我编写了以下代码。但是,它与主源代码相同,但卡在了 strcpy() 处。我想不通。这是源代码:
#include <stdio.h>
#include <string.h>
int ctoi(char a) {
return (a-48);
}
char itoc(int a) {
return (a+48);
}
void main() {
int ld, lm, i, j;
char div[20], ip[100], ipm[100], crc[10], snd[100]={0}, rcv[100];
printf("\t\t\tCRC Encoding\n");
printf("Enter the codeword: ");
scanf("%s",ip);
printf("Enter the divisor: ");
scanf("%s",div);
strcpy(ipm, ip);
lm = strlen(ipm);
ld = strlen(div);
if(lm>=ld) {
//padding
for(i=lm, j=0; j<ld-1; j++)
ipm[i++] = '0';
ipm[i] = '\0';
printf("Data word after appending zeroes: %s\n", ipm);
for(i=0;i<ld;i++)
crc[i] = ipm[i];
crc[i] = '\0';
for(;i<strlen(ipm);i++) {
if(crc[0] == '1') {
for(j=0; j<ld; j++)
crc[j] = itoc((ctoi(crc[j])) ^ (ctoi(div[j])));
}
crc[ld] = ipm[i];
crc[ld+1] = '\0';
for(j=0;crc[j]!='\0';j++)
crc[j] = crc[j+1];
crc[j] = '\0';
}
for(j=0;crc[j]!='\0';j++)
crc[j] = crc[j+1];
crc[j] = '\0';
printf("CRC remainder is: %s\n",crc);
strcat(snd, ip);
strcat(snd, crc);
printf("Sent codeword: %s\n",snd);
printf("CRC Decoding\n");
strcpy(rcv, snd);
printf("after strcpy");
printf("Received codeword: %s", rcv);
for(i=0;i<ld;i++) {
crc[i] = rcv[i];
}
crc[i] = '\0';
for( ;i<strlen(rcv);i++) {
if(crc[0]=='1') {
for(j=0;j<ld;j++) {
crc[j] = itoc((ctoi(crc[j])) ^ (ctoi(div[j])));
}
}
crc[ld] = rcv[i];
crc[ld+1] = '\0';
for (j = 0; crc[j]!='\0'; i++) {
crc[j] = crc[j+1];
}
crc[j] = '\0';
for(j=0; crc[j]!='\0'; j++) {
if(crc[j]!='0')
break;
}
printf("CRC remainder is: %s\n",crc);
if(j==strlen(crc)) {
printf("Received message is error free\n");
} else {
printf("Received message contains errors\n");
}
}
} else {
printf("Enter a proper divisor");
}
}
输出屏幕是:
CRC Encoding
Enter the codeword: 10110
Enter the divisor: 110
Data word after appending zeroes: 1011000
CRC remainder is: 00
Sent codeword: 1011000
CRC Decoding
卡在上面那行了。但正确的程序在这里:
#include<stdio.h>
#include<string.h>
int ctoi(char a)
{
return(a-48);
}
char itoc(int a)
{
return(a+48);
}
void main()
{
char ip[100],ipm[100],div[20],crc[10],sent[100]={0},rec[100];
int i,lm,ld,j;
printf("\nCRC encoding");
printf("\nEnter data word(message)");
scanf("%s",ip);
printf("\nEnter the divisor");
scanf("%s",div);
strcpy(ipm,ip);
lm=strlen(ipm);
ld=strlen(div);
if(lm>=ld)
{
for(i=lm,j=0;j<ld-1;j++)
ipm[i++]='0';
ipm[i]='\0';
printf("\nData word after appending zeros:%s",ipm);
for(i=0;i<ld;i++)
crc[i]=ipm[i];
crc[i]='\0';
for(;i<strlen(ipm);i++)
{
if(crc[0]=='1')
{ for(j=0;j<ld;j++)
{
crc[j]=itoc((ctoi(crc[j]))^(ctoi(div[j])));
}
}
crc[ld]=ipm[i];
crc[ld+1]='\0';
for(j=0;crc[j]!='\0';j++)
crc[j]=crc[j+1];
crc[j]='\0';
}
for(j=0;crc[j]!='\0';j++)
crc[j]=crc[j+1];
crc[j]='\0';
printf("\nCRC remainder is:%s",crc);
strcat(sent,ip);
strcat(sent,crc);
printf("\nCode word in sender side is:%s",sent);
printf("\nCRC decoing");
strcpy(rec,sent);
//rec[2]='1';
printf("\nReceived message in receiver side is :%s",rec);
for(i=0;i<ld;i++)
crc[i]=rec[i];
crc[i]='\0';
for(;i<strlen(rec);i++)
{
if(crc[0]=='1')
{
for(j=0;j<ld;j++)
{
crc[j]=itoc((ctoi(crc[j]))^(ctoi(div[j])));
}
}crc[ld]=rec[i];
crc[ld+1]='\0';
for(j=0;crc[j]!='\0';j++)
crc[j]=crc[j+1];
crc[j]='\0'; }
for(j=0;crc[j+1]!='\0';j++)
crc[j]=crc[j+1];
crc[j]='\0';
for(j=0;crc[j]!='\0';j++)
{
if(crc[j]!='0')
break;
}
printf("\nCRC remainder is:%s",crc);
if(j==strlen(crc))
printf("\nReceived message is error free!\n\n");
else
printf("\nError in received message!!!\n\n");
}
else
printf("\nEnter proper divisor");
}
而且它运行完美。即使我逐行查看,我也无法找到这两个程序之间的区别。你能告诉我第一个程序有什么问题吗?
最佳答案
问题是由代码中的一个小拼写错误引起的。你写的
for (j = 0; crc[j]!='\0'; i++) {
crc[j] = crc[j+1];
}
但应该是
for (j = 0; crc[j]!='\0'; j++) {
crc[j] = crc[j+1];
}
注意j++
。当然,对 strcpy()
的调用不是罪魁祸首!
关于c - 程序陷入循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23156523/
我是 JavaFx 新手,正在尝试编写我的刽子手游戏。我现在必须检查保存我的词典的文件是否在那里。如果没有,请用户输入其位置。我试图在弹出窗口中执行此操作,要求用户输入位置并点击按钮,该按钮反过来将导
我卡住了。我试图用 SQLite 表的字段填充 ListView 。我对 Android 编程很陌生。关于我为什么会收到此错误的任何建议: 10-24 10:24:31.154: ERROR/Andr
我正在编写一个 java 程序,它接受用户输入的数字 x,对从 1 到 x(包括 x)的所有可被 3 整除的数字求和,并显示总和。它编译没有错误但是当我执行程序时,它陷入循环并继续执行直到我关闭命令提
JS 和 Web 编程新手。 我有一个图像在 Canvas 上沿水平轴移动。当图像到达某个点时,我希望它停止、缩放然后旋转。我使用的方法会导致无限循环,我不明白为什么。 这是被调用的方法 while
我制作了一个使用表单、php 和 javascript 进行登录和注销的页面。 但唯一的问题是,当您提交表单并且数据发生更改时,直到页面重新加载后才会更新。 注意lo
我在查询时陷入困境。我想根据“时间和点赞数”查询帖子,但不知道如何在 firebase 上查询。示例: Query mquery =FireBaseDatabase() getReference().
这个问题已经有答案了: Why does my ArrayList contain N copies of the last item added to the list? (5 个回答) 已关闭 6
所以,我有一个项目,任务是这样表述的: 您需要创建一个名为 Candidate 的类,它存储参加选举的人的姓氏以及他们获得的票数。您还应该有访问每个字段的方法。此时,这些字段不需要修改器,因为它们不应
我正在解决 Java 编程类(class)中的作业问题,但我陷入了困境。我会预先告诉你,我绝不是专家,并且对 Java 或一般编程了解不多。 我遇到的问题实际上不是我的作业问题,而是书中的一个例子,我
我正在用java编写一个客户端程序。服务器是用C++编写的。当我从以下位置发送消息时客户端到服务器就可以了。但是在接收过程中我的客户端线程陷入了这个调用 in = new BufferedReader
我正在参加 Edx 上的在线类(class) cs50,我有一个作业,其中我必须创建一个程序,用户在其中输入关键字(然后用于加密)和需要在 Vigenere 中加密的字符串。密码。 Vigenere
我遇到了陷入 getIntLimited 函数的问题。在调整数量中,我需要它检查用户是否输入了正确的数字,而不是多于或少于所需的数字,而不是字母。我没有对“库存”选项这样做,只在“检查”选项中这样做。
我更喜欢创建一个 Dictionary 对象并向其中添加 3 个单词。我的程序没有编译错误,但在第二个 for 循环中出现运行时错误,问题出在 addNewWord 函数中吗?我需要传递一个指向 Di
该程序的要点是获取 2 个文件,一个是字典,另一个是文本,创建一个输出文件,并将文本文件中的所有单词放入其中,但将文本文件中不存在的单词大写字典。 当我运行程序时,它不断要求输入,所以看起来我陷入了
我正在为我的 C++ 类(class)做作业。在这个作业中,我需要编写一个程序,从 cin 中读取数字,然后对它们求和,当使用 while 循环输入 0 时停止。 我已经编写了代码并获得了我需要的结果
这是我到目前为止所得到的- $awards_sql_1 = mysql_query('SELECT * FROM categories WHERE section_id = 1') or die(my
我想弄清楚某个步骤何时发生。所以我编写了一个名为 countSteps 的方法来执行此操作。它的问题是我陷入其中,因为在 while 循环中我不断获取新数据,而且我认为它永远不会返回到 onSenso
我有点卡在一个问题上了。我有一个 Spring + Hibernate 应用程序,最近几天表现得很奇怪。 通常,即使在 Debug模式下,它也会引导大约 15 秒。 几天后,在没有显示任何重大错误或问
我是编程新手,我想知道是否有人可以帮助我解决这个问题?它似乎处于连续循环中,我一直在更改它并尝试不同的方法近一个小时,将不胜感激。 #include "stdafx.h" #include
我正在用 Python 创建一个聊天服务器,并且对这门语言的了解还很浅。我现在有 1 个问题,我想在进一步解决之前解决,但我似乎找不到解决问题的方法。 这是一个持续的 while 循环.. 下面的代码
我是一名优秀的程序员,十分优秀!