배열로 작업하고 있는데 문자열 배열을 함수 및 다른 비트로 문자열 및 ints 배열로 전달했습니다.strcpy with strings array
지금, 내가 무슨 짓을했는지 strcpy
에 문제가 있고 알고 싶어
- 그것은 내가
strcpy(temp, str1[i]);
동안temp
이char *temp
입니다 할당하는 경우와 충돌합니다. 단일 문자열 배열
temp[100]
. 그러나 배열의 문자열 요소에 대한temp
의 크기를 계산하는 방법을 알지 못했습니다. 나는temp
의 크기로 17을 주어야하므로 문자열 배열에서 바이트를 맞춰야한다는 것을 이해했습니다. 좋아요 :char *temp[17];
다음 적용 할 수 있습니다strcpy(temp, str1[i]);
여기*str1[] = {"sweepsweepsweepsweep"}
20 자. 그리고 크기가 16 인 경우 충돌이 발생합니다.stings 배열의 한 구성원을 다른 구성원에게 할당 할 수 없습니다. 하지만 그렇게하는 코드 하나를 보았습니다.
내가 다른 빈 문자열 배열 &
str3
str2
를 선언하는 경우, 그들은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
_ "그 코드를 보았습니다."_ 정확한 코드를 보여주지 않으면 _ 우리에게 도움이되지 않습니다. – Michael