簡體   English   中英

復制限制字符的字符串

[英]Copy strings with limited characters

好的,這是一個家庭作業問題,因此我無法使用string.h庫。 此功能是將s2指向的數組復制到s1指向的數組中,最多復制n個字符(不復制空字符后面的字符)。

int main()
{
    char sourceString[100];
    char targetString[100];
    int num;
    printf("Enter a string:");
    gets(sourceString);
    printf("Enter no. of characters: ");
    scanf("%d", &num);
    printf("stringncpy(): %s", stringncpy(targetString, sourceString, num));
}

char *stringncpy(char * s1, char * s2, int n)
{
    int i;
    for (i = 0; i < n; i++)
    {
        if (s2[i] != '\0')
        {
            s1[i] = s2[i];
        }
        else
        {
            break;
        }
    }
    s1[i] = '\0';
    return s1;
}

它運行正常,只不過它在n個字符之后打印了一些垃圾字符而無法識別。 適當地使用http://ideone.com/運行代碼,我沒有得到那些垃圾字符,但是在VS上卻可以。

由於gets使用的話,最好使用

     if (s2[i] != '\0' && s2 [i] != '\n')

相反,如果

      if (s2[i] != '\0')

如果n定義字符的最大數目,則應確保n < 100 for循環之后for i == n向第i個位置寫入'\\0'可能會導致問題。 或者也許循環應該是

     for (i = 0; i < n-1; i++)

暫無
暫無

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

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