繁体   English   中英

连接(添加)两个字符字符串

[英]concatenating (adding) two charcter strings

有人告诉我编写一个包含连接函数的程序。 该程序应使用fgets (&s1[0], len1+1, stdin)收集输入字符串,然后将两者相加以生成最终产品。

我的问题在于程序编译但它没有在屏幕上显示任何内容,这就是我所拥有的。 如果没有这种方法,我不知道如何解决它。

//function to terminate the program incase reach of 0
int str_len (char s[])
{          
int i=0;
while (s[i]= NULL)
++i;
return i+1;
}
char string_cat (char*s1, char*s2)
{
//ADDING THE TWO STRINGS
int str_len(char s[])
char *s1 [80]= {'\0'};
char *s2 [40]= {'\0'};
int len1=str_len(s1);
int  len2=str_len(s2);
if (int x=0; len1+len2<80; \0;
return;
}
int main ()
{
char string_cat(char*s1,char*s2)
int str_len(char s[])
//RECIVING THE STRINGS TO ADD
char s1 [80];
char s2 [40];
int i=0;
for (i; i !=0; ++i)
{
printf("What is the first sentence?: ")
fgets(*s1[0], 75+1, stdin);
printf("What is the second sentence?:")
fgets(*s2[0],35+1,stdin);
string_cat(*s1,*s2);
printf("The two sentences added together produce the following: %c",s1 )
}
++i
return 0;
}

除了其他人指出的 for 循环错误之外, str_len 函数中的 while 循环是错误的。 你应该使用 while(s[i] != NULL) 而不是 s[i] = null。 一个等号“=”是赋值; 两个等号“==”是比较; 感叹号等于“!=”,表示不等于。

其次,您将 s1 和 s2 重新分配到 string_cat 函数中的不同内存位置,它们的第一个字符为 NULL,“\\0”。 如果如上所述更正了您的 str_len 函数,这将始终为您的 str_len 提供长度为 0 的长度,如果未根据运行时占用您的内存的内容进行更正,则将始终为您提供一个随机数的长度。

第三 [仍在 string_cat 函数中],你的if(int x = 0; len1 + len2 < 80; \\0;没有意义。你根本没有在这个函数中做任何连接。

很抱歉没有为您提供解决方案,因为这是一个简单的练习。 如果我要向您提供代码,我想宠坏您。

在您的代码中有很多编译错误。 复制粘贴你编译的代码。

检查这行代码

int i=0;
for (i; i !=0; ++i)

正因为如此,你没有得到任何东西。 在 for 循环中,您有条件i !=0总是失败,因此它不会进入循环内。

第一个问题在这里

int i=0;
for (i; i !=0; ++i)

您将值 0 设置为变量i ,然后检查它是否不等于 0。此检查显然不会通过,因为i等于0

第二个问题也是循环。 我根本无法理解您需要循环的原因,因为i根本没有使用,除了增量。 所以据我所知,根本不需要循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM