簡體   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