c - c 中的奇怪结果

标签 c string

我想问一下我的节目。这个的主要目的是用从“tab1”和“tab2”数组收集的数据填充“result”数组。有人可以检查一下,为什么结果如此奇怪?谢谢。

#include <stdio.h>
#include <stdlib.h>

void laczenie(char tab1[],char tab2[])
{
int i;
char* result =(char*) malloc(100*sizeof(char));

for(i=0;i<30;i++)
{
    if(tab1[i] != '\0') tab1[i]==result[i];
     else if (tab2[i] !='\0')tab2[i]==result[i];
     else printf(" ");

}
for(i=0;i<30;i++)printf("%c",result[i]);
free(result);
}


int main() 
{
char x[10]={'n','a','p','i','s','1'};
char y[10]={'n','a','p','i','s','2'};
//char x[10] = {"napis1"};
//char y[10] = {"napis2"};
laczenie(x,y);

return 0;}

最佳答案

除了上面 LihOs 的回答之外,这个 block 看起来是错误的:

if(tab1[i] != '\0') 
  tab1[i]==result[i];
else if (tab2[i] !='\0')
  tab2[i]==result[i];
else printf(" ");

你的意思是不是要把值赋给tab1[i]tab2[i]result[i]像这样吗?

if(tab1[i] != '\0') 
  result[i] = tab1[i];
else if (tab2[i] !='\0') 
  result[i] = tab2[i];
else printf(" ");

还使用magic numbers就像循环中一样:for(i=0;i<30;i++)这是非常糟糕的做法,您可能应该使用一个常量作为大小值(然后您可以在循环和数组声明中使用它。当数组只有 10 个元素时,为什么要循环到 30?

关于c - c 中的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344052/

相关文章:

perl - 如何在 Perl 中提取两个行分隔符之间的行?

c# - 字符串函数不更新全局变量

sql-server - 在字符串中查找多个空格的表达式

c - 如何在xinetd定制服务中获取连接客户端的IP地址

c - 同一程序的不同启动过程中的多个(随机选择)输出。 fscanf'ing 时添加的随机字符

python - 尝试从 python 中的字典中拆分作为键的字符串,出现无法解释的错误。为什么?

javascript - 不能在括号中使用变量只能直接输入将dms转换为dd

c - 返回 1 或 0 的函数

c - 在 C 中保持套接字打开

c - 我无法编译带有动态二维数组和指针的 C 文件