C言語なら俺に聞け 154

■ このスレッドは過去ログ倉庫に格納されています
2020/01/14(火) 19:32:30.16ID:SgRnb4BR0
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 153
https://mevius.5ch.net/test/read.cgi/tech/1566050562/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/04/17(金) 12:30:59.31ID:AkLTGvvI0
>>644
進化退化の結果、無駄になっちゃったものなら結構あるよね
ケツ毛とか、人差し指から小指までの腱間結合とか
2020/04/17(金) 12:32:10.12ID:uUpf2Y3l0
人間自体無駄
647デフォルトの名無しさん (ワイーワ2 FFdf-xa8R)
垢版 |
2020/04/17(金) 14:09:42.57ID:3B9MCfUYF
虫垂炎で虫垂取っちゃった人はコロチャンに弱いってことかな
2020/04/17(金) 14:35:48.83ID:uUpf2Y3l0
いらないと思って取っちゃったよ
649デフォルトの名無しさん (ワイーワ2 FFdf-xa8R)
垢版 |
2020/04/17(金) 15:10:48.97ID:3B9MCfUYF
2020/04/17(金) 16:18:03.57ID:xoWFQBId0
パイエル板みたいなもんか
651デフォルトの名無しさん (ワッチョイ 9fad-Ho7r)
垢版 |
2020/04/18(土) 13:49:13.30ID:VYQrLT4k0
>>645
環境が変化した場合に再度必要になるかも知れないのでなんとも言えない。
地球の自然環境は変化し続けるしね。
652デフォルトの名無しさん (ワッチョイ 9fad-Ho7r)
垢版 |
2020/04/18(土) 14:51:32.00ID:VYQrLT4k0
>>646
この世界全体が無駄と言えば無駄だな。

まあしかし人間は自分の欲望を満たすものに対して無駄がないと感じるだけのことなので、
欲望がなくなればそれもなり全てはあってもなくても良いどうでも良いものになる。
2020/04/20(月) 16:26:18.96ID:LGT//Bm+0
>>644
扁桃腺切除、アデノイド切除もだな
https://indeep.jp/dont-remove-tonsils-of-kids/
654デフォルトの名無しさん (アウアウエー Sadf-xa8R)
垢版 |
2020/04/21(火) 11:05:50.29ID:dT9nwdnwa
石田晴久ってまだ生きてんの?
2020/04/21(火) 12:05:14.25ID:asepdmU3M
鬼籍の人
2020/04/21(火) 12:19:27.00ID:kyWq+dbI0
https://de.wikipedia.org/wiki/Haruhisa_Ishida
2020/04/22(水) 04:04:56.61ID:P99VZQTl0
c言語用のおすすめwebフレームワークplz
2020/04/22(水) 08:56:18.23ID:tIkd0GYk0
go言語ならたくさんあるんじゃね
2020/04/22(水) 09:31:17.33ID:94fF+/tAM
4(C)言語、5(GO)言語とおすすめwebフレームワークが増えるの?
6言語は何?
660デフォルトの名無しさん (アウアウエー Sa6a-0GGu)
垢版 |
2020/04/22(水) 10:11:23.93ID:O/jaLKmba
サイボウズのCGIってCで描かれてるんだっけ
2020/04/22(水) 10:20:50.37ID:obS+r2in0
>>646
こういう悟り厨ほど自分が死ぬときにはめちゃくちゃ言い訳しまくるもんよ。
2020/04/23(木) 23:53:15.47ID:wF6p0RUq0
英小文字の出現回数を出現した文字だけ数えたいのですがうまくいきません
ご指導お願いします


#include <stdio.h>

int main(void) {
char ch;
int cc[26] = {0};
int i;

for(;(ch=getchar())!=EOF;){
if((ch>='a')&&(ch<='z')){
cc[ch-'a']++;
}
}




for (i='a'; i<'z'; i++) printf("%c:%d\n", i, cc[i+'a']);

return 0;
}
2020/04/24(金) 00:19:05.81ID:dt1qmdTj0
これはC言語なのか?
2020/04/24(金) 00:23:10.36ID:zB+8iNgr0
いたらなくてすみませんがC言語です
2020/04/24(金) 00:29:10.67ID:SZShfMPk0
これは宿題なのか?
2020/04/24(金) 00:32:48.00ID:dt1qmdTj0
出力の箇所

× printf("%c:%d\n", i, cc[i+'a']);
○ printf("%c:%d\n", i, cc[i-'a']);
2020/04/24(金) 00:36:40.55ID:dt1qmdTj0
それともう一つ
char ch ; は
int ch; にした方が良い
2020/04/24(金) 01:12:46.99ID:onlsKD/x0
https://paiza.io/projects/z-ohjvsIhSR6X_lC8q7MKA
コンパイルが通りません。
どこが悪いか教えてもらえないでしょうか。
-Iと-Lの使い方や、regexのコンパイル?(.a)の指定方法等を調べてみたのですがわかりません。
C:\clang>gcc -I "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\include" -L "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\lib" filename.c
C:\Users\maru\AppData\Local\Temp\ccgTVd7X.o:filename.c:(.text+0x75): undefined reference to `regcomp'
C:\Users\maru\AppData\Local\Temp\ccgTVd7X.o:filename.c:(.text+0xf0): undefined reference to `regexec'
C:\Users\maru\AppData\Local\Temp\ccgTVd7X.o:filename.c:(.text+0x19a): undefined reference to `regfree'
collect2.exe: error: ld returned 1 exit status
libregex.aとregex.hは上記pathに存在します。
環境:
windows10 64bit
gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)
mingw-w64-install.exeで64bit版をインストールしました。
2020/04/24(金) 01:29:37.91ID:zB+8iNgr0
>>666
ありがとうございます!
あと、入力されてない文字を出力したくないんですが
もう一つご教授願います!
2020/04/24(金) 04:35:22.10ID:QT76eCNa0
「入力されてない文字を出力したくない」のだから
出力するところにその条件を書けばよい

自分でデバッグしないと身につかないよ
2020/04/24(金) 05:31:04.69ID:ahZInywh0
>>668
「ライブラリとして libregex.a も使うのでリンクしてくれ」と教えるために
-lregex と書かなきゃいけないんじゃないかな。

> gcc -I "..." -L "..." filename.c -lregex

ってな感じ。
2020/04/24(金) 09:34:34.44ID:N82Nh9jxM
これはゾンビですか?
いいえC言語です。
2020/04/24(金) 10:36:16.91ID:onlsKD/x0
>>671
C:\clang>gcc -I "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\include" -L "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\opt\lib" filename.c -lregex
コンパイルと実行ができました。
c言語の勉強を始めて間がないので、かなり困っていました。
先へ進めることができます、ありがとう。
2020/04/24(金) 19:43:54.74ID:xndEmFws0
C言語はゾンビですか?
2020/04/25(土) 02:36:17.81ID:hi7DiOZ50
どの言語かなんて聞いとらん。
お前のpushでゾンビプロセスになったんだ。速く直せ
2020/04/25(土) 04:50:47.91ID:jHPUydMa0
Cプログラムはゾンビプロセス化しやすい
2020/04/25(土) 20:26:18.80ID:CZd/Jkgq0
ゾンビプロセスって親のせいだろ
2020/04/25(土) 21:24:06.12ID:r8bOCmclM
OSのプロセス管理による
C言語固有の問題ではない
2020/04/26(日) 03:01:35.30ID:WTnD7Qwo0
2chのread.cgiがGitHubに公開されてた
https://github.com/nekoruri/readcgi/blob/master/read.c
680デフォルトの名無しさん (ワッチョイ e2ad-1Gce)
垢版 |
2020/04/27(月) 22:31:53.92ID:0bO6Thr30
( ´_ゝ`)フーン
681デフォルトの名無しさん (ワッチョイ 731e-RQtm)
垢版 |
2020/04/28(火) 14:09:05.23ID:wJiWpF7n0
くっそ初歩的な質問なんですが、コンパイラ入れてパスも通したのにハローワールドさえ実行できなくなりました
何がいけないのかな?

https://dotup.org/uploda/dotup.org2128201.jpg
2020/04/28(火) 14:26:07.89ID:LE+4zw960
>>681
ファイルが見つかりません
2020/04/28(火) 14:30:52.61ID:vhevaFWy0
>?o: Invalid argument

oの前にあるの、半角ハイフォンじゃないのでは?
684デフォルトの名無しさん (ワンミングク MM3e-RQtm)
垢版 |
2020/04/28(火) 14:40:19.14ID:xVP5Xe0nM
>>681
見ての通り指定の場所にちゃんとあるし名前も合ってるんだがなぁ
>>683
半角にするとcannot excute 'as':って謎のエラーと「ファイルが見つかりません」ってエラーとでふたつでてきました
2020/04/28(火) 14:45:10.07ID:E3zbKYWLM
>>684
状況を貼れ。
2020/04/28(火) 15:03:51.84ID:l2FqJJrF0
全角文字のパス未対応だったとか、"しゅもく"に\コード含んでたとか。
C:\prg とか作ってそっちで試したら?
2020/04/28(火) 15:10:26.53ID:vhevaFWy0
試しに gcc helloworld.c ってやってみて

a.exeは出来ますか?
688デフォルトの名無しさん (ワンミングク MM3e-RQtm)
垢版 |
2020/04/28(火) 16:01:15.79ID:xVP5Xe0nM
>>687
a.exeの実行で無事出来ました!
ありがとうございます助かりました
689デフォルトの名無しさん (ワンミングク MM3e-RQtm)
垢版 |
2020/04/28(火) 16:01:29.54ID:xVP5Xe0nM
他の皆さんもお力添え感謝です
2020/04/28(火) 16:28:06.87ID:LE+4zw960
何が原因だったのか解明できていないのは非常にもやもやする
まぁ初心者の頃はそんなのに付き合わずとりあえずいろいろやれ、っていうのもあるけどやっぱもやもやする
2020/04/28(火) 16:30:56.64ID:PSHN1orM0
タイポでしょ
2020/04/28(火) 16:38:05.42ID:0ndGBSxH0
ハイフンが全角だったんじゃないの
2020/04/28(火) 16:40:48.16ID:15/yEbjR0
asが無ーて言われたんだから、インストール変なんじゃ無いの。
2020/04/28(火) 17:34:18.80ID:yXtY+D7s0
なる
2020/04/28(火) 18:07:23.24ID:e3702+yfa
モヤモヤする…
?o となっているから、?の部分が文字化けのようでもあり
コマンドラインの o の前のハイフンがそれっぽくないようにも見えるし
2020/04/28(火) 18:56:53.29ID:15/yEbjR0
>>695
それは >>684 で直ったみたい。
2020/04/28(火) 19:01:58.68ID:e3702+yfa
>>696
たしかに後半はそう書いてありますね…

# ime で半角ハイフンに見える別の文字をと疑ってますがw
698デフォルトの名無しさん (ワッチョイ baa5-WHvH)
垢版 |
2020/04/28(火) 20:05:39.72ID:8JlwwrXC0
普通のハイフンに見える別文字だろう

どっかのサイトでコードとコマンドを丸々コピペ、
そのコピペしたコマンドに何故かノンブレーキングハイフンとかが含まれていた、あたり
699デフォルトの名無しさん (ワッチョイ bf1f-h83k)
垢版 |
2020/04/29(水) 04:32:11.62ID:5pVwrDle0
プリミティブ型が解放されるタイミングはいつですか?
例えば
int a = 0;
a = 1;
のコードでaのメモリは上書きされるのか別の場所に確保されるのか
それらは参照が切れるまでかまたはプログラムの終了かまで解放されないのか?

また、
for(int i = 0; 10 > i; i++)
だとiは10回確保されるのかもしくは1週ごとに上書きされて制御を抜けると解放されるのか?
お願いします
2020/04/29(水) 04:40:50.47ID:WYuVLDSoH
>>699
>プリミティブ型が解放されるタイミングはいつですか?
>例えば
>int a = 0;
>a = 1;
>のコードでaのメモリは上書きされるのか別の場所に確保されるのか

プリミティブ型・構造体・共用体にかかわらず、static, extern をつけない auto 変数は、
その変数が定義されたスコープ { } から抜けると「解放される」ことになります
auto 変数はスタックに確保されるのが普通です、この場合は解放という言葉はちょっと意味が違ってきます

>for(int i = 0; 10 > i; i++)
>だとiは10回確保されるのかもしくは1週ごとに上書きされて制御を抜けると解放されるのか?

for() 文から抜けると i はスタックから外れます
2020/04/29(水) 05:43:54.19ID:6z2jvBCe0
スタックが普通でもないけど
2020/04/29(水) 06:35:41.63ID:8simRhZl0
for (int i = 0; 10 > i; i++) {
 /* i==0 から i==9 まで i はずっと同じ i */

 int n = 0; /* 「i==0 のときの n」と「i==1 のときの n」は別物 */
 ...
 /* n は「}の直前」で消滅 */
}
/* i は「}の直後」に消滅 */

こんな感じだったかね。
確保・解放と言うより、名前の同一性かも知れんけど。
2020/04/29(水) 07:34:06.20ID:kGpdE2MD0
今どきのコンパイラだとregister指定がないauto変数でもレジスタになってることがよくあるから
メモリを確保・解放しているとは限らないけど、そんな下らないことは考えなくても
変数の存在期間がスコープに合わせて階層的になっていることは
スタックを使って実現しているであろうと想像するのが最も無理がない

昔のメインフレームみたいな、ひねくれた実装で考えたいやつは勝手にしろってやつ
2020/04/29(水) 08:17:54.33ID:6z2jvBCe0
何を使って実現してるとか考える必要はないと思うけど
コストだけ知ってれば
2020/04/29(水) 08:59:54.99ID:kGpdE2MD0
いきなり何nsとだけ言われても
そこから応用が全く利かないだろうが
2020/04/29(水) 09:07:16.86ID:skx4o1Ma0
>>700
「スコープ」は名前の有効範囲で静的・ソースコード上のことで
動的・実行時のことなら「ブロック」というべきじゃないかな
2020/04/29(水) 09:45:29.84ID:504Vu0b/0
流石に釣りだろ
毎回確保してたらなんでforループが回るんだよ
javaのintegerオブジェクトみたいな話ならわかるがメモリそのまま使ってんだからさ
2020/04/29(水) 09:54:13.18ID:U7o9KgzC0
>>706
ISO C 規格より引用。
> ... There are four kinds of scopes: function, file, block, and function prototype. ...
同じく:
> A block allows a set of declarations and statements to be grouped into one syntactic unit.

少なくともCではそんな区別は無いね。
2020/04/29(水) 14:26:19.40ID:skx4o1Ma0
>>708
それ、
>「スコープ」は名前の有効範囲で静的・ソースコード上のこと
を肯定してるように読めるよ
2020/04/29(水) 15:34:59.85ID:9HSaf6AX0
関係ないが、iが10個確保されるという考え方は面白いな
ループを再帰で書いたような感じか
2020/04/29(水) 15:52:26.64ID:p4QkWxoM0
アセンブラをちょっとやるとそこら辺の迷いも無くなるしポインタが何なのかってこともよく分かるんだが、
いかんせん最近のPCは規模が大きすぎてアセンブラでちょっと何かやるのには適さないからなぁ
2020/04/29(水) 15:58:07.06ID:19JAw+bw0
代入の度に左辺変数が新規作成される言語無かったっけ。Python?
2020/04/29(水) 15:59:47.38ID:ERu+PHi5M
>>709
そっちは正しいけど
> 動的・実行時のことなら「ブロック」というべきじゃないかな
がおかしいって話だろ
2020/04/29(水) 16:41:13.25ID:CC6TnmVU0
昔はアドレスレジスタとデータレジスタで簡単に説明できたし、コンパイルして「ほらね」と言う説明もできた
今はその辺が難しい
2020/04/29(水) 17:38:44.58ID:AWau/KJM0
どう実装されるかは最適化含めて色々あるからなんとなくこんなもん程度で
2020/04/29(水) 17:43:06.84ID:6z2jvBCe0
>>710
OpenMPやSIMDによる並列化を使えば10個くらい同時に出来る
2020/04/29(水) 18:21:25.20ID:skx4o1Ma0
>>713
>708の引用がそれを否定してるようにも読めない
2020/04/29(水) 18:55:17.87ID:U7o9KgzC0
>>717
引用足しとくね。
> A compound statement is a block.
...
> A selection statement is a block whose scope is a strict subset of the scope of its enclosing block. ...
...
> An iteration statement is a block whose scope is a strict subset of the scope of its enclosing block. ...

こんな感じで、ソースコード上の文に対応する概念でスコープ(静的・ソースコード上のこと)を
成すものの一種であるから、これが「動的・実行時のこと」というようなことはありえない。
2020/04/29(水) 18:55:54.46ID:aNqmXzgwM
>>717
そりゃアホな内容をいちいち否定してたらキリないからな
2020/04/29(水) 21:14:04.28ID:skx4o1Ma0
>>718
足してくれても情報量増えてないね
ブロックがスコープの一種であることはわかった(ってかそれを否定してない)けど、
それ以上のことは言ってない

「自動変数の寿命はスコープ(=関数、ファイル、ブロック、関数宣言)を抜けたら尽きる」
より
「自動変数の寿命はブロックを抜けたら尽きる」
でよくないか?

>>719
ID:U7o9KgzC0さんはそのキリないことをしてくれてるみたいだし
お前もしようとしてるんじゃないの??
2020/04/29(水) 21:22:07.90ID:EqfxCPAQd
自動変数はレジスタ割り当てにより記憶領域が再利用されることかある訳だし、最適化で変数自体が消える可能性もあり得る。
2020/04/29(水) 23:20:52.24ID:EKyVvulT0
>>720
スコープという概念が初心者にとって馴染みがなく伝わりにくいから構文の要素として目に見えて理解しやすいブロックと言い換えて説明する、というなら理解できる。
しかし、発端の>>706で言っているスコープは静的・ソース上のこと、動的・実行時にはブロックという理解は頓珍漢だと思うぞ。
2020/04/29(水) 23:25:04.77ID:U7o9KgzC0
>>720
>706 で言ってるような違いは無くてどっちでも同じ意味になると理解してくれたらないいんだけど、
その言い換えを改めて推してくるとなると何か誤解がありそうな気がする。

ブロックに言い換えることで何がよくなるのか、あるいはスコープだと何がよくないのか、言える?
2020/04/29(水) 23:58:02.35ID:uCKNv2Kba
>>699
言葉遣いや着眼点と、分からないことがアンバランスだなぁ〜
2020/04/30(木) 00:42:18.37ID:hNg1W2hQ0
「スコープは名前の有効範囲で静的・ソースコード上のこと」は正しいと認めてもらえたと思っていいのかな
それを「自動変数の寿命」という動的・実行時のことに使うのが気に入らない
ファイルスコープという関係無いことも含んじゃうじゃないか
2020/04/30(木) 01:17:57.08ID:WifEy9Hu0
>>725
> 「スコープは名前の有効範囲で静的・ソースコード上のこと」は正しいと認めてもらえたと思っていいのかな

それはそう。そしてその点についてブロックも変わらないと言っている。

自動変数の寿命に関する規格の言い回しはこんな感じ。
> ... its lifetime extends from ... until execution of that block ends in any way. ...
...
> ... its lifetime extends from ... until execution of the program leaves the scope of the declaration. ...

「ブロックの実行が終わったら」「プログラムの実行がスコープを出たら」などと定めている。
特に誤解の余地も無いかと。
2020/04/30(木) 08:18:03.97ID:1K8TO0XxM
>>725
> 「スコープは名前の有効範囲で静的・ソースコード上のこと」は正しいと認めてもらえたと思っていいのかな
それに反対して奴なんていないだろ

> 動的・実行時のことなら「ブロック」というべきじゃないかな
が頓珍漢だって言われてるだけ
2020/04/30(木) 08:50:53.47ID:WdGtAJJk0
>>725
局所変数(自動変数とstatic局所変数)のスコープは関数とブロックなのだから、ファイルスコープが入るからおかしいという理屈は的はずれだろう。
で、局所変数である自動変数とstatic局所変数の違いが、スコープから出たときに生存期間が終わるかどうかということなのだから、自動変換の生存期間としてスコープを出たらというのはごく自然なことだと思うぞ。
2020/04/30(木) 12:23:16.18ID:SRUQMA9G0
蚊帳の外の住人「それ知ってなんの役に立つの?自分でコンパイラでも作るの?」
2020/04/30(木) 18:49:14.38ID:889RNOPY0
コード書くのに何処まで生きているかだけを意思しとけばいいし
2020/04/30(木) 18:54:36.66ID:BmbmhQuP0
デストラクタもないし
2020/04/30(木) 20:01:49.37ID:C2m9eJq7M
>>729
さすがにスコープと生存期間ぐらいは把握してなきゃコード書けんだろ
2020/04/30(木) 20:26:12.67ID:BmbmhQuP0
コードを書くための知識はある
厳密な言葉の定義が論点
2020/04/30(木) 21:11:49.19ID:hNg1W2hQ0
>>726
引用ありがとう
規格にそれがあるなら納得するしかないな

>>728
静的なことと動的なことの区別がついていないように感じてしまう
俺が気に入らないってだけのことなんだ、すまんかったね
2020/05/01(金) 07:10:40.17ID:9yUywlA00
解放のタイミングが保証されているのではなく
存在の保証が切れるタイミングが規定されているわけだ
736デフォルトの名無しさん (アウアウエー Sa9f-ur4w)
垢版 |
2020/05/01(金) 09:05:45.71ID:k2YlXFh6a
面倒なのは同じ用語でも言語によって定義とか意味が違うことだな
2020/05/01(金) 09:13:25.69ID:szy0v2+r0
実装する側の自由度を持たせるために >>735 みたいな規定になるんだろう
2020/05/01(金) 09:42:08.95ID:M7Vhg9zM0
次はmalloc&free問題ですか?
2020/05/01(金) 12:13:03.23ID:qAMe7KCB0
それは考え方としては分かりやすい
2020/05/01(金) 17:40:11.58ID:DtDCGOpK0
>>737
保証されてないし実際違う
2020/05/01(金) 20:59:04.90ID:9yUywlA00
>>740
まるでおまえさんの脳味噌だなw
2020/05/01(金) 21:00:09.83ID:DtDCGOpK0
おれの脳味噌は良い方だと思う
2020/05/01(金) 21:00:54.26ID:DtDCGOpK0
大学出てるし
2020/05/01(金) 21:02:34.98ID:DtDCGOpK0
>>741みたいな中卒とは違う
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況