- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我正在尝试在 K&R 中进行练习。它要我做一个类似于挤压的功能,我不明白它有什么问题。我已经检查过了。我不想在网上找到解决方案,我想了解为什么我的代码无法运行。
//removes characters that are present in both strings
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define MAXLTR 15
void removesame(char s1[],char s2[]);
int main(void)
{
char string1[MAXLTR],string2[MAXLTR];
printf("Enter a string: ");
scanf("\n%s",&string1);
printf("\nEnter the letters/words to be removed: ");
scanf("\n%s",&string2);
removesame(string1,string2);
printf("\nFinal output: %s",string1);
getch();
}
void removesame(char s1[],char s2[])
{
char temp[MAXLTR];
int arraycntr,comparecntr;
for(comparecntr = 0; comparecntr < MAXLTR; comparecntr++)
{
for(arraycntr = 0;arraycntr < MAXLTR;arraycntr++)
{
if(s1[arraycntr] == s2[arraycntr])
s1[arraycntr] == '\t';
}
}
comparecntr = 0;
for(arraycntr = 0; arraycntr < MAXLTR; arraycntr++)
{
if(s1[arraycntr] != '\t')
{
temp[comparecntr] = s1[arraycntr];
++comparecntr;
}
}
for(arraycntr = 0; arraycntr < MAXLTR; arraycntr++)
s1[arraycntr] = '\0';
for(arraycntr = 0;arraycntr < MAXLTR; arraycntr++)
s1[arraycntr] = temp[arraycntr];
}
最佳答案
这不是赋值,而是相等性测试:
s1[arraycntr] == '\t';
你的意思是:
s1[arraycntr] = '\t';
如果您使用高警告级别进行编译,编译器可能会发出一条消息提醒您注意这一点。 Microsoft VC 编译器发出以下警告:
C:\devel\cpp\stackoverflow\main.c(32) : warning C4553: '==' : operator has no effect; did you intend '='?
最初的 for
循环只检查 s1
和 s2
是否在相同的索引中有相同的值,它不检查一个字符s1
中存在于 s2
中的任何位置。 for
循环的终止条件也应该是 s1
和 s2
的长度,而不是 MAXLTR
:
size_t arraycntr,comparecntr;
for(comparecntr = 0; comparecntr < strlen(s2); comparecntr++)
{
for(arraycntr = 0;arraycntr < strlen(s1) ;arraycntr++)
{
if(s1[arraycntr] == s2[comparecntr])
s1[arraycntr] = `\t`;
}
}
下一个 for
循环也应该使用 strlen(s1)
并在之后将空终止符分配给 temp
:
comparecntr = 0;
for(arraycntr = 0; arraycntr < strlen(s1); arraycntr++)
{
if(s1[arraycntr] != `\t`)
{
temp[comparecntr] = s1[arraycntr];
++comparecntr;
}
}
temp[comparecntr] = '\0';
temp
未在任何地方初始化,因此包含随机数据,除了在此 for
期间刚刚输入的数据。如果 temp
中没有空终止符,s1
也将以没有空终止符结尾(之后您可能会看到垃圾打印)。最后,在填充 s1
时只需 strlen(temp) + 1
:
for(arraycntr = 0;arraycntr < strlen(temp) + 1; arraycntr++)
s1[arraycntr] = temp[arraycntr];
+ 1
会将空终止符复制到 s1
。
小提示,不是在 for
循环的终止条件中调用 strlen()
,而是可以存储它:
size_t chars_to_copy;
for(arraycntr = 0, chars_to_copy = strlen(temp) + 1;
arraycntr < chars_to_copy;
arraycntr++)
{
s1[arraycntr] = temp[arraycntr];
}
关于c - 类似于 squeeze() 的用户定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11259936/
我有许多 ID 的数据文件隐藏在深层目录结构中,例如: ID1/a/b/c/data1 ID1/d/e/data2 ID1/f/g/h/i/data3 ID2/j/data1 ID2/k/l/m/da
我仍然使用 Debian Squeeze,并且由于此版本已存档(2016 年 2 月 29 日),我使用 archive.debian.org 上的存档存储库 deb http://archive.d
我发现文档说如果可能的话减少返回类型的维度,否则返回一个一致的类型。 df = pd.DataFrame( {'a': np.ones(4, dtype='float32'), '
我有t.shape=(M, N),现在我想将新值v分配给数组的一部分,该部分是用变量索引的m 和 n。 m 是一个数组,n 可以是 int 也可以是一个数组。如果 n 是一个数组,我会执行 m=m.r
所以我正在尝试在 K&R 中进行练习。它要我做一个类似于挤压的功能,我不明白它有什么问题。我已经检查过了。我不想在网上找到解决方案,我想了解为什么我的代码无法运行。 //removes charact
以下是基于 Coursera 深度学习类(class)计算成本函数和梯度以便对图像进行分类的代码。 计算成本如下 cost = -np.sum(Y*np.log(A) + (1-Y)*np.log(1
很多时候,数组是用 np.squeeze() 压缩的。在文档中,它说 Remove single-dimensional entries from the shape of a. 但是我仍然想知道:为
我永远不记得如何做到这一点。 怎么走 从向量(大小(n1))到列矩阵(大小(n1,1))? 或者从矩阵(大小(n1,n2))到数组{T,3}(大小(n1,n2,1))? 或从数组{T,3}(大小(n1
我创建了一个包含一些数据的表,当我添加 display: block 时我收到一个错误,我使用在堆栈上找到的解决方案修复了这个错误-溢出即 squeezed when is display:bloc
如何“挤压重复”的单词?类似于“压缩重复字符”与 tr -s '' 我想更改例如: hello.hello.hello.hello 到 hello 最佳答案 这可以是一种方式: $ cat a hel
我正在尝试为我正在执行的 Web 应用程序设置部署,但启动脚本遇到一些问题。这是我到目前为止所做的: #!/bin/bash DIR=/webroot/webapp.com PATH=/usr/loc
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
当我写: \begin{frame}[label=foo,squeeze] ... \end{frame} 以后使用 \againframe{foo}要重复框架,重复框架上的内容不会被“挤压”(在我的
可以运行以下代码并且不会出现错误: >>> np.squeeze(['']) array('', dtype='>> np.squeeze([[]]) array([], dtype=float64)
我正在尝试构建一个模型,其中我有一个张量,必须对其进行压缩,然后将其输入 LSTM。 模型无法编译,因为压缩张量没有层属性。 Using TensorFlow backend. Traceback (
我有点问题。我在 Debian Squeeze 上,我想安装 sqlite2。问题是,当我尝试: # pip install pysqlite2 我得到: Downloading/unpacking
这个问题在这里已经有了答案: How do I complete K&R Exercise 2-4? (6 个答案) 关闭 9 年前。 所以这里的练习是设计一个程序,它接受一个字符串并删除该字符串中
有没有一种方法可以在同一个容器中将两个元素并排 float ,而不会在窗口尺寸减小时将最右边的元素压到下方?相反,我希望窗口覆盖正确的元素。 这是CSS: #logo { margin-left: 4
我目前正在使用 squeeze 从矩阵中删除两个单一维度。矩阵是一个大的 4d 矩阵 M(:,:,:,:)。前两个维度是行和列坐标(y 和 x)。第三维变量(indexes)选择了M第三维的几个值。
我想编写一个压缩函数 squeeze(s1,s2) 来删除 s1 中与字符串 s2 中的任何字符匹配的每个字符。 除了时间复杂度 (m * n) 之外,是否有任何可用的算法,即遍历字符串 s1 m 次
我是一名优秀的程序员,十分优秀!