見よう見まねでスタック構造からデータをput&getするプログラムを作成致しました。
しかしながら、データを格納する箇所で以下のエラーが発生します。
error
1stack.c: In function ‘put’: 2stack.c:8:9: warning: implicit declaration of function ‘strcpy’ [-Wimplicit-function-declaration] 3 8 | strcpy(stack[stack_ptr], putdata); 4 | ^~~~~~ 5stack.c:8:9: warning: incompatible implicit declaration of built-in function ‘strcpy’ 6stack.c:3:1: note: include ‘<string.h>’ or provide a declaration of ‘strcpy’ 7 2 | #include "./stack.h" 8 +++ |+#include <string.h> 9 3 | 10stack.c:8:21: warning: passing argument 1 of ‘strcpy’ makes pointer from integer without a cast [-Wint-conversion] 11 8 | strcpy(stack[stack_ptr], putdata); 12 | ~~~~~^~~~~~~~~~~ 13 | | 14 | char 15stack.c:8:21: note: expected ‘char *’ but argument is of type ‘char’ 16/usr/bin/ld: /tmp/ccySka8x.o:(.data+0x0): multiple definition of `stack_ptr'; /tmp/cce9NB2v.o:(.data+0x0): first defined here 17collect2: error: ld returned 1 exit status
解消方法をご教示願います。
c
1void main(void) 2{ 3 char buf[128]; 4 5 ret = put("abcabcabc"); 6 ret = get(buf); 7}
c
1int put(char *putdata) 2{ 3 if(stack_ptr+1<MAX_STACK){ 4 stack_ptr++; 5 strcpy(stack[stack_ptr], putdata); 6 return 1; 7 }else{ 8 return 0; 9 } 10 11} 12 13int get(char *buffer) 14{ 15 if(0 <= stack_ptr && stack_ptr < MAX_STACK){ 16 (*buffer)=stack[stack_ptr]; 17 stack_ptr--; 18 return 1; 19 }else{ /* underflow */ 20 return 0; 21 } 22 23}
h
1int put(char *putdata); 2int get(char *buffer); 3 4 5#define MAX_STACK 256 /* スッタクサイズの上限 */ 6char stack[MAX_STACK]; /* スタックの実体である配列 */ 7int stack_ptr=(-1); /*スタックが空であることを示す。 */
回答2件
あなたの回答
tips
プレビュー