[英]Why is variable i not incremented in the loop?
這是什么問題 我試圖連接兩個字符串。
這是完整的代碼。 僅打印第一個字符串。
#include<stdio.h>
main()
{
char s[100],s2[100];
printf("Enter a String\n");
scanf("%s",&s);
printf("Enter second String\n");
scanf("%s",&s2);
int i=strlen(s);
//printf("%d",i);
int j;
for(j=0;s2[j]!='\0';++j)
{
i+=1;
s[i]=s2[j];
}
printf("%s",s);
}
如前所述,您跳過的終止符,更改為
for(j=0;s2[j]!='\0';++j)
{
s[i]=s2[j];
i+=1;
}
s1[i]='\0'; // terminated after concatenation
你應該在那里 請記住,如果不檢查結果字符串的長度,則可能會使s [100]數組溢出。
如果您想更安全地編寫此代碼,並且不要使s變量溢出,請使用以下代碼:
size_t size = strlen(s) + strlen(s2);
char* result = (char*) malloc(sizeof(char) * size + 1);
sprintf(result, "%s%s", size);
這是簡單且安全的。 並在功能上做到自動釋放s
和s2
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.