【问题标题】:concatenating (adding) two charcter strings连接(添加)两个字符串
【发布时间】:2016-03-01 06:45:07
【问题描述】:

我被告知要编写一个包含连接函数的程序。该程序应使用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;
}

【问题讨论】:

  • 您的代码无法编译。当我尝试编译它时,我得到了很多错误。你用什么编译的?
  • 在您的主函数中,您传递变量而不首先声明它。
  • 我使用了代码块。也许这就是为什么../编辑:我打开了另一个程序..这就是为什么,我现在得到了错误..回到绘图板
  • 如果您希望其他人阅读您的问题,请先编辑它并修正缩进。

标签: c char concatenation fgets


【解决方案1】:

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

检查这行代码

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

因此,您什么也得不到。在 for 循环中,您的条件 i !=0 总是失败,因此它不会进入循环内部。

【讨论】:

    【解决方案2】:

    第一个问题来了

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

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

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

    【讨论】:

    • "输入字符串应该使用 fgets(&s1[0], len1 + 1, stdin)和 fgets(&s2[0], len2 + 1, stdin)从键盘顺序收集, len1 和 len2 是各自输入字符串的最大尺寸"
    • 好吧,这有点清楚了。据我了解,您根本不需要 for (i; i !=0; ++i) 。正如我所说 - 它没有被使用,也不需要更多的点
    【解决方案3】:

    除了其他人指出的 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 没有意义。你没有在完全没有这个功能。

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

    【讨论】:

      猜你喜欢
      • 2013-11-05
      • 2011-08-29
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 2011-11-04
      相关资源
      最近更新 更多