関数でエラー

このQ&Aのポイント
  • 関数でエラーが発生し、エラーメッセージが表示されます。
  • 詳細なエラーメッセージは、配列型の割り当てエラーとセミコロンの不足です。
  • エラーの解決方法は、配列型の変更とセミコロンの追加です。
回答を見る
  • ベストアンサー

関数でエラー

#include<stdio.h> int func(int, int); int main() { int a, b, c; a = 10; b = 20; c = func(a, b); printf("%d x %d" = %d\n", a, b, c) return 0; } int func(int a, int b) { int c; c = a * b; return c; } エラーが出てしまうのですが、どうしてエラーが出るのか教えて頂けないでしょうか? エラー一覧です。 ------------------------------------------------------------------------------------------------------------------------------- 配列型 const char[8]を割り当てることはできません。 14行目 ;がreturnの前にありません              16行目 式は変更可能な左辺値である必要があります      14行目 ;が必要です                     16行目 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • maiko0333
  • ベストアンサー率19% (840/4403)
回答No.1

printf("%d x %d" = %d\n", a, b, c) にて真ん中の”X”が16進コードの演算子%X と見られているのではないでしょうか? X を外してみてください。

aiueo6391
質問者

お礼

解決しました、 ありがとうございます。

関連するQ&A

  • C言語 どこがコンパイルエラーか解りません。

    いつも大変お世話になっております。 標記の件。 どこがエラーなのか解りません。 2時間くらい、にらめっこが続いています。 どこがエラーなのか教えて下さい。 ご回答のほどよろしくお願い申し上げます。 コード #include <stdio.h> int a = 0; void func(void) { int c = 2; printf("func関数では変数aとcが使えます。¥n”); printf("変数aの値は%dです。\n",a); /*printf("変数bの値は%dです。\n",b);*/ printf("変数cの値は%dです。\n",c); } int main(void) { int b = 1; printf("main関数では変数aとbが使えます。\n"); printf("変数aの値は%dです。\n", a); printf("変数bの値は%dです。\n", b); /*printf("変数cの値は%dです。\n", c); */ func(); return 0; } コンパイルエラー printf("func関数では変数aとcが使えます。¥n”); ^ text10.c:9:8: error: missing terminating " character printf("func関数では変数aとcが使えます。¥n”); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ text10.c:10:34: error: expected ')' before ';' token printf("変数aの値は%dです。\n",a); ^ text10.c:10:1: warning: passing argument 1 of 'printf' makes pointer from integer without a cast [-Wint-conversion] printf("変数aの値は%dです。\n",a); ^~~~~~ In file included from text10.c:1:0: c:\mingw\include\stdio.h:454:38: note: expected 'const char *' but argument is of type 'int' _CRTIMP __cdecl __MINGW_NOTHROW int printf (const char *, ...); ^~~~~~ text10.c:13:1: error: expected ';' before '}' token } どうかよろしくお願いいたします。

  • constの位置

    申し訳ありませんが、続けて質問させていただきます。 char const と const char は同じ意味でしょうか。 次のプログラムは配列をconst charと宣言しています。 ary[1]='N'; の行で、意図した通りにコンパイルエラーになります。 これはchar constと宣言しても、同じ意味なんでしょうか。 #include <stdio.h> int main(void) { const char ary[ ] = { 'A', 'B', 'C', '\0' }; ary[1] = 'N'; printf("aryは%s\n", ary ); return 0; } また、 const int a=1; int const a=1; この2つは同じ意味でしょうか。

  • プログラミング教えてください!!!お願いします。

    プログラミング教えてください!!!お願いします。 次の文が実行されると何がどのようにプリントされるか。何もプリントされない時は「なし」と記せ。 また、途中に「ブランク」が入る場合は、”b”と記せ。 (1) int func1(), func2(); int data = 100; main() { int w = 1; static x =10; printf("** %d, %d, %d\n" ,w,x,data); func1(); printf("** %d, %d, %d\n" ,w,x,data); } int func1(){ int w = 2; static int x = 20: printf("*** %d, %d, %d\n", w, x, data); x += 10; func2(); printf("*** %d, %d, %d\n" , w,x,data); x *= 2; data = data - x; } int func2() { int w = 3; static int x = 30; printf("**** %d, %d, %d\n" ,w,x,data); data -= x; } (2) int func1(char *, char *, char *); int func2(char *, char *, char *); main() { char sta[20], stb[20], stc[20], std[20]; int i=0; func1("abc","xyz",sta); printf("%d -- %s\n" ,++i,sta); func1("123","456",stb); printf("%d -- %s\n" ,++i,stb); func1(sta,stb,stc); printf("%d -- %s\n" ,++i,stc); func2(sta,stb,std); printf("%d -- %s\n" ,++i,std); } int func1(char *a, char *b, char *c){ while(*a) *c++ = *a++; while(*b) *c++ = *b++; * c = 0x00; } int func2(char *a, char *b, char *c){ int i = 0; while(*b){ if(i%2 == 0) *c++ = *a++; else *c++ = *b++; i++; } *c = 0x00; }

  • 関数原型宣言について

    関数原型宣言について 下記のプログラムのfunc関数は、関数原型宣言 <func(int a, long b, char *c);>が述されていないのにfunc関数の仮引数の型longは、関数原型宣言が与えられるといると本に書かれていたのですが、何故でしょうか教えて頂きたい。 ******************************************** #include <stdio.h> /*--- 三つの引数を受け取る関数 ---*/ void func(int a, long b, char *c) { int x; long y; /* … */ } int main(int argc, char *argv[]) { int a = 1; char s[] = "abc"; func(a + 3, 2, s); return (0); } *************************************************************

  • C++の(左辺値)参照を参照渡し

    おそらく基本的なところなのですが 参照を参照で渡すのはNG…? という記述をどっかで見たような見なかったような気がするのですが 再度確認しようと思うも見つからず。 気のせいかもしれません。 または そのときの文章では「参照」という言葉が別の意味で使われていたかもしれませんが 以下のように、左辺値参照を左辺値参照渡しするコードはconst参照、非const参照問わず規格上OKでしたっけ? #include <stdio.h> void func(int& n){ if ( n%7 ){ n+=9; func(n); } else return; } int main(void){ int i = 1; func(i); printf( "%d", i ); return 0; }

  • 長方形、円、三角形の計算するプログラムでエラーがでます

    タイトルの通りなんですがエラーがでます>< コンパイラはできたのですが、実行して二つ目の入力するとこで、入力したあと止まります。 どこがおかしいのでしょうか? #include <stdio.h> int sikaku(void); int en(void); int main(void) { char ch; int a,b; printf("円(A) 長方形(B) 三角形(C)\n"); printf("入力してください:"); ch = getche(); if(ch == 'C'){ printf("\n底辺を入力してください:"); scanf("%d ",a); printf("高さを入力してください:\n"); scanf("%d",b); printf("%dです",a * b); } else if(ch == 'B') sikaku(); else if(ch == 'A') en(); return 0; } int en(void) { int a; float f; printf("\n半径を入力してください:"); scanf("%d",a); printf("円周率を入力してください:"); scanf("%f",f); printf("%fです",a * a * f); return 0; } int sikaku(void) { int a,b; printf("\n縦を入力してください:"); scanf("%d",a); printf("横を入力してくさい:\n"); scanf("%d",b); printf("dです",a * b); return 0; }

  • セグメントエラー

    #include <stdio.h> int find(char a[],int c) { int k,s,count; s = 0; k = 0; count = 0; while( a[k]!= 0 && a[k] != c) { s = a[k]; count = count + 1; k++; } if(a[k] = 0) return(-1); else return(count); } int main(void) { int d; d = 0; d = find("aaaas",'s'); printf("%d",d); return(0); } 文字列を検索するやつなんだけど セグメントエラーが出るんだけど どこが間違ってるか教えてください!

  • C言語の簡単な質問です。

    #include "stdio.h" int tasizan(int a,int b){ int c; c=a+b; return c; } int main(void){ int a,b,c; a=1; b=1; c=tasizan(a,b); printf("%d+%d=%d",a,b,c); return 0; } と、あるとします。この文を読み込む順番を教えてください。  文の左に行番号みたいに順番を書き込んでください。   例 (例が間違ってたらすみません) 1 #include "stdio.h" 2 int main(void){ 3 int a,b,c; 4 a=1; 5 b=2; 6 c=a+b; 7 printf("%d+%d=%d",a,b,c); 8 return 0; }

  • 関数のコピー

    以下のようなソースがあります。 していることは、char配列に関数をコピーしています。それを関数ポインタに変換して、実行しています。 自作の場合はできるのですが、 MessageBoxをコピーすると以下(字数の関係上無理でした。)のようにメモリ内容がなっており、そのままコピーしたつもりですが、若干異なっております。 どのようにすればMessageBoxがじっこうできるのか, 教えていただきたく質問しました。 よろしくお願いします。 mb,code3が該当分です。 //ソース #include<stdio.h> #include<memory.h> #include<windows.h> int func(int cnt) { return cnt*10; } int func2(int cnt,int cnt2) { return cnt+cnt2; } char *func3() { return "Hello"; } int main() { int (*fa)(int); //MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaotion,UINT uType); int (*fm)(int,int); int (*mb)(HWND,LPCTSTR,LPCTSTR,UINT); char *(*hl)(void); /*fa=func; printf("%d",fa(5)); getchar(); */ char code[12800]; char code2[12800]; char code3[80000]; char code4[12800]; memset(code,0,12800); memset(code2,0,12800); memset(code3,0,80000); memset(code4,0,12800); memcpy(code,(char *)func,12800); memcpy(code2,(char *)func2,12800); memcpy(code3,(char *)MessageBox,80000); memcpy(code4,(char *)func3,12800); fa=(int(*)(int))(void *)code; fm=(int(*)(int,int))(void *)code2; mb=(int(*)(HWND,LPCTSTR,LPCTSTR,UINT))(void *)code3; hl=(char *(*)(void))(void *)code4; printf("%d\n",fa(3)); printf("%d\n",fm(3000,10)); printf(hl()); MessageBox(NULL,"","",MB_OK); mb(NULL,"","",MB_OK); getchar(); return 0; }

  • gcc: incompatible pointer type

    以下のCソースでコンパイルすると、warning: passing arg 1 of `func_b' from incompatible pointer type となります。 void (*p_func)() は、引数を省略しているので int として扱われるということでしょうか? #include <stdio.h> #include <stdlib.h> void func_a( unsigned char x ){ printf( "x=%d\n", x ) ; } void func_b( void (*p_func)() ){ p_func( 1 ) ; } int main(){ func_b( func_a ) ; return 0 ; }

専門家に質問してみよう