質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

3回答

1255閲覧

PrintStr()の定義

sawayakaunagi

総合スコア17

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/07/18 11:07

編集2021/07/18 13:56

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
引数のアドレスにある文字列が表示されるようにPrintStr ()を定義せよという問題を、PrintStr()の中で呼び出すのはputchar()だけという条件どのようにやるのか教えてもらいたいです。

発生している問題・エラーメッセージ

エラーメッセージ ```コンパイル時にこのように出てきます kk.c: In function ‘PrintStr’: kk.c:3:9: warning: implicit declaration of function ‘putchar’ [-Wimplicit-function-declaration] 3 | putchar(*a); | ^~~~~~~ /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start'; (.text+0x24): undefined reference to `main' collect2: error: ld returned 1 exit status### これに加え、実行時にそれに加え、実行時にbash: ./kk: No such file or directory と出てきて実行できないのですが、なぜでしょう? 該当のソースコード c言語 ```ここに言語名を入力 ソースコード

void PrintStr(char*a){
while(*a){
putchar(a);
a++;
}
char
k = "Kobe",h[]="I am very hungry.";
PrintStr(k); PrintStr("University"); PrintStr(h);
putchar('\n');
}### 試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fiveHundred

2021/07/18 11:11

C#とC言語は全くの別物です。 内容から察するにC#ではないので、C#のタグを外してください。
pepperleaf

2021/07/18 11:17

ソースは、バッククォート(`)で括ってください。(日本語キーだと、"P" の右にあるの) 提示のコードが全てでしょうか? とすると、main()がありませんが、別にある? コンパイルはどのようにやってるでしょうか? (gcc kk.c ?) ざっと見る限り、Cの基本的なところがNGなように見えます。
guest

回答3

0

kk.c:3:9: warning: implicit declaration of function ‘putchar’ [-Wimplicit-function-declaration]
putchar(*a);
^~~

putcharが宣言されぬまま使われてる。
おそらく #include <stdio.h> を忘れてるから。

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in function _start';

(.text+0x24): undefined reference to main'
collect2: error: ld returned 1 exit status###

関数mainがないのでリンクに失敗。
実行モジュール kk が生成されていないので

./kk: No such file or directory

となるのもアタリマエ。

C

1#include<stdio.h> 2 3void PrintStr(char*a){ 4 while(*a){ 5 putchar(*a); 6 a++; 7 } 8} 9 10int main() { 11 char *k = "Kobe",h[]="I am very hungry."; 12 PrintStr(k); 13 PrintStr("University"); 14 PrintStr(h); 15 putchar('\n'); 16 return 0; 17}

投稿2021/07/18 11:27

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sawayakaunagi

2021/07/18 14:21

回答ありがとうございます!加えて質問なんですが、 void PrintStr(char*a){ while(*a){ putchar(*a); a++; ここのwhile(*a)のところなんですが、僕が習ったのはwhile(式)文で式を満たすとき、ずっと同じ判定をするみたいなやつなのですが、(*a)は条件となるような式と思えないのですがどうなっていますか? char、putcharは一文字しか表せられないのでwhileで繰り返して複数の文字を表そうとしているのかと思ったのですがどうですかね?
episteme

2021/07/18 14:32

> (*a)は条件となるような式と思えないのですが while ( なにか ) は while ( なにか != 0 ) と同じです。 > putcharは一文字しか表せられないのでwhileで繰り返して複数の文字を表そうとしているのかと思ったのですがどうですかね? そうですね。
guest

0

エラー・警告メッセージについて意訳すると

kk.c:3:9: warning: implicit declaration of function ‘putchar’ [-Wimplicit-function-declaration]

#include <stdio.h>がされていない
コレに関しては警告(warning)なので無視することも可能ではあります。

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in 'function _start';

(.text+0x24): undefined reference to 'main'

main関数が定義されていない

実行時にbash: ./kk: No such file or directory

コンパイルが正常に終了していないため./kkファイルが存在しない。

投稿2021/07/18 11:22

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんな感じになるでしょうか?

C

1#include <stdio.h> 2 3void PrintStr(char*a){ 4 while(*a){ 5 putchar(*a); 6 a++; 7 } 8} 9 10int main(void) 11{ 12 char*k = "Kobe",h[]="I am very hungry."; 13 PrintStr(k); PrintStr("University"); PrintStr(h); 14 putchar('\n'); 15}

コンパイルは、gcc kk.c -o kk (最近、使ってないのでちょっと自信がないが)

投稿2021/07/18 11:28

pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問