【发布时间】:2012-03-28 19:27:29
【问题描述】:
我从 C 开始,来自 meta c 语言,基本,PHP 和 HTML 的时间很短
#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]);
我需要将* 放在str (*str) 之前以传递警告消息,但我没有声明任何指针。为什么是这个解决方案?
如果我将%u 更改为%s,它会返回分段错误,这是什么问题?
【问题讨论】:
-
阅读一本关于 C 的优秀编程书籍(你会得到比在论坛上更好的解释,因为在几分钟内解释 C 是不可能的),并学会使用调试器。
-
你能给我一些参考吗?实际上我正在使用 geany :-)
-
@sataranjasvami,见stackoverflow.com/tags/c/info
-
cprogramming.com en.wikipedia.org/wiki/The_C_Programming_Language 和 Brian W. Kernighan、Dennis M. Ritchie 的经典著作,关于C 编程语言
-
*str与*(str + 0)相同,与str[0]相同。
标签: c multidimensional-array char printf