내가 메타 C 언어, PHP의 기본, 짧은 시간과 HTML에서 오는, C로 시작하고, 캐스트없이 포인터의 정수를 만드는경고 : 할당 세그먼트 오류
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
compare(const void * a, const void * b){
return (*(int*)a - *(int*)b);
}
int main(){
int arr_size = 10;
int j;
char array[arr_size][2];
char str[50];
char output[50];
// fill the array with string and random integers
for (j=0; j<arr_size; j++) {
strcpy(str, "array");
array[j][0] = str; //i've should put *str
array[j][1] = rand() % arr_size+1;
}
// print the array
for (j=0; j<arr_size; j++) {
strcpy(str, "");
strcpy(output, "");
sprintf(str, "%u", array[j][0]); // %u should be %s but return me segmentation fault
strcat(output, str);
strcat(output, " ");
sprintf(str, "%i", array[j][1]);
strcat(output, str);
printf(output); printf("\n");
}
printf("\n");
}
이 전체 코드입니다, 내가이전 *
을 둘 필요가
array[j][0] = str;
및
sprintf(str, "%u", array[j][0]);
보고경고 메시지를 전달하지만 어떤 포인터도 선언하지 않았습니다. 왜이 해결책?
%u
을 %s
으로 변경하면 세분화 오류가 반환됩니다. 무엇이 문제입니까?
가 C에 대한 좋은 프로그래밍 책을 읽기 이후
이또한,
sprintf(str, "%s", array[j]);
을 할 수없는 몇 분에 C를 설명하기 때문에 (당신은 포럼에보다 더 좋은 설명을 얻을 것이다 불가능)하고 디버거를 사용하는 법을 배웁니다. –몇 가지 참조를 제안 할 수 있습니까? 사실 geany를 사용하고 있습니다 :-) – DreamIt
@sataranjasvami, http://stackoverflow.com/tags/c/info –