gpt4 book ai didi

复制字符数有限的字符串

转载 作者:行者123 更新时间:2023-11-30 17:19:02 25 4
gpt4 key购买 nike

好吧,这是一个家庭作业问题,我无法使用 string.h 库。该功能是复制不超过n个字符(后面的空字符不被复制)从s2指向的数组到s1指向的数组。

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之后循环i == n写作'\0'到第 i 个位置可能会导致问题。或者也许循环应该是

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

关于复制字符数有限的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28982647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com