我正在使用數組,我已經完成了將字符串數組傳遞給函數和其他位與字符串和ints數組打交道的位。strcpy與字符串數組
現在,我有strcpy
,我做了什麼問題,想知道:
- 它與崩潰如果我給你
strcpy(temp, str1[i]);
而temp
是char *temp
。 單串陣列
temp[100]
。但是,我沒有弄清楚如何計算temp
到數組的字符串元素的大小。我明白我必須給出17作爲temp
的大小,以適應字符串數組中的字節。 Like:char *temp[17];
然後,我可以申請strcpy(temp, str1[i]);
其中*str1[] = {"sweepsweepsweepsweep"}
20個字符。和大小爲16的崩潰。我不能將一個成員的蜇數組分配給另一個成員。 但我看到了一個代碼。
另一件事,這就是爲什麼如果我宣佈其他空字符串數組
str2
&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;
}
您不是在任何地方初始化'temp'。你不能通過一個指向任何地方的指針來讀寫。 – Michael
同樣適用於'i',您嘗試將其作爲索引使用,而不是先初始化它。 – Michael
_「我看到一個這樣做的代碼」,除非您向我們展示確切的code_,否則對我們沒有任何幫助。 – Michael