【发布时间】:2021-05-29 08:14:27
【问题描述】:
我正在尝试更改arr 列表的排序,该列表可能包含zero, one, two 作为arr 的输入和存储值。 stringreplace 函数旨在将每个元素移动一个,因此新的排序将是 one, two, zero。我正在尝试使用strncpy 函数将元素相互替换,但我认为它有点错误,我该如何解决这个问题?
strncpy 函数
char stringreplace( char a[], int b){
for(int j = 0; j > b -1; j++){
strncpy(a[j], a[j+1], sizeof(a));}
for(int j = 0; j > b; j++){
printf("%s",a[j]);}
}
主要功能
int main()
{
char input[100];
char arr[100]= {0};
int number;
printf("Input the number of strings: ");
scanf("%d", &number);
for(int i= 0; i < number; i++){
printf("Input the number of strings: ");
scanf("%s", input);
arr[i] = input;
}
stringreplace(arr, number);
return 0;
}
【问题讨论】:
-
sizeof(a)是指针的大小,而不是字符串的长度。 -
strncpy()的前两个参数必须是指针。a[j]和a[j+1]不是指针,它们是字符。 -
请在您的代码中打开警告。它们将帮助您处理错误的参数、将字符分配给指针以及缺少返回语句。
-
strncpy()几乎是从不正确使用的函数。如果要复制字符串,请使用strcpy()。如果目的地不够大,无法容纳字符串,则需要修复它。 -
man strncpy“字符串不能重叠”a重叠a。
标签: c function for-loop if-statement conditional-statements