[英]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.