簡體   English   中英

為什么變量i在循環中不增加?

[英]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);

這是簡單且安全的。 並在功能上做到自動釋放ss2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM