我正在使用数组,我已经完成了将字符串数组传递给函数以及使用字符串和整数数组进行其他位操作。
现在,我遇到strcpy
的问题,我做了什么,想知道:
strcpy(temp, str1[i]);
temp
char *temp
时分配temp[100]
,则会崩溃。单字符串数组temp
。但是,我没有弄清楚如何计算temp
到数组的字符串元素的大小。我知道我必须给出17作为char *temp[17];
的大小,以便适应字符串数组中的字节。
喜欢:
strcpy(temp, str1[i]);
然后,我可以申请*str1[] = {"sweepsweepsweepsweep"}
其中str2
20个字符。并且崩溃的大小为16。
我无法将stings数组的一个成员分配给另一个成员。 但我看到一个代码就是这样做的。
如果我宣布其他空字符串数组str3
& str1
,它们与#include <stdio.h>
#include <string.h>
#include <stdint.h>
int main()
{
int m = 0, j = 1, n, i;
char *str1[] = {"sweep", "forward"}, *str2[] = {}, *str3[] = {}, *temp;
uint8_t cnt = sizeof(str1) / sizeof(str1[0]);
if (strcmp(str1[m], str1[j]) > 0) {
strcpy(temp, str1[m]);
strcpy(str1[m], str1[j]);
strcpy(str1[j], temp);
printf("OK\n");
} else {
printf("NOPE\n");
}
printf("The sorted string\n");
for (i = 0; i < cnt; i++)
puts(str1[i]);
printf("%d\n", strcmp(str1[0], str1[1]));
printf("-----------------\n");
printf("temp: %s\n", temp);
printf("str2: %s\n", str2[0]);
printf("str3: %s\n", str3[0]);
return 0;
}
具有相同的值?它包含在代码示例的末尾。
这是我的代码:
#include<stdio.h>
int main(){
int i,j,n;
char str[20][20],temp[20];
puts("Enter the no. of string to be sorted");
scanf("%d",&n);
for(i=0;i<=n;i++)
gets(str[i]);
for(i=0;i<=n;i++)
for(j=i+1;j<=n;j++)
{
if(strcmp(str[i],str[j])>0)
{
strcpy(temp,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],temp);
}
}
printf("The sorted string\n");
for(i=0;i<=n;i++)
puts(str[i]);
return 0;
}
在线代码示例:
cmap_dict = cmap._segmentdata
答案 0 :(得分:0)
我认为你的错误是因为temp是一个指针,你将它用作字符串(Char数组)
当你打电话给strcpy(str1[j],temp)
时,问题出在哪里,我想。
另请注意,在线解决方案不使用* temp指针,它使用数组