C言語なら俺に聞け 157

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0345-kMi9)
垢版 |
2021/06/28(月) 11:22:51.50ID:so+vl3vs0
!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言語なら俺に聞け 156
https://mevius.5ch.net/test/read.cgi/tech/1601271690/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/10/16(土) 23:00:54.46ID:iHqDmbcU0
>char str[] = "Hello";
とにかくここが気持ち悪い・・・
2021/10/16(土) 23:02:15.17ID:j08Y/8ma0
>>728
入力の最後に改行がある前提で表示を行うか、
文字列最後に改行がある場合は切り詰めるか、
どちらかで処理すると良いです
2021/10/16(土) 23:02:51.64ID:hXa8blxW0
>>729
それは別に普通では?
2021/10/16(土) 23:08:52.93ID:j08Y/8ma0
>>728
切り詰め方はこんな感じで

 if (str[strlen(str) - 1] == '\n')
  str[strlen(str) - 1] = 0;

↑全角空白は適当に置き換えて
733デフォルトの名無しさん (ワッチョイ 3b54-t/lv)
垢版 |
2021/10/16(土) 23:13:30.42ID:D7GMWgGE0
Hello!って!付ければいいよ。元気が足りない。
さらにこれfgetsの動作の理解を問う良問なんだから、無駄な改行なんぞ気にする余裕があるならfretsのドキュメント読んだ方がいいぞ。
734デフォルトの名無しさん (ワッチョイ 3b54-t/lv)
垢版 |
2021/10/16(土) 23:14:42.85ID:D7GMWgGE0
>>733
偉そうに言ってスペルミスですね。fgets です
2021/10/16(土) 23:26:16.40ID:0CjYy/Ai0
>>732
ご親切にありがとうございます!
>>730頂いてから調べててまたわからないことが増えたーって思っていたところでした笑
上の問題は無事解決しました
ありがとうございます

>>729
スマートな初期化方法があれば教えて欲しいです
2021/10/16(土) 23:27:52.08ID:0CjYy/Ai0
>>733
正しく書き直せた場合の実行結果に改行が入ってなかったので気になりました汗
2021/10/17(日) 00:24:13.17ID:IGrhvydt0
>スマートな初期化方法があれば教えて欲しいです
バッファサイズをちゃんと決めておくぐらいか?
ギリギリのサイズじゃなく余裕をもって(最大文字数+1(終端NULL)かつ32bitOSなら4バイト、64bitOSなら8バイト単位とか)。
定義後すぐにfgetsに渡すなら初期化も要らないと思うけど、念のためにやるなら
char str[8]="";

char str[8]={0};
かな。
738デフォルトの名無しさん (ワッチョイ 9fad-ZO17)
垢版 |
2021/10/17(日) 06:25:57.65ID:atjZW8su0
>>731
そうやって初期化した str[] の内容を後で書き換えるのは普通ではないと思う。
可能だが気を付けてないとバグの元になりそうだしね。

似たようなのに char *p = "hoge"; があるが、これはコンパイラによっては文字列をリードオンリーになるようにコード作って *p = 'A'; なんて後でやるとOSがプログラム停止させたりする。
しかしCの文法としては間違いではないのでコンパイルエラーにならない。
2021/10/17(日) 07:57:57.94ID:iZHfLY3SH
>>721
>char str[] = "Hello";

>>738
> str[] の内容を後で書き換えるのは普通ではないと思う。

私は「配列であるかぎり」それを後から書き換えるのは、初期化方法に関係なく文脈・表現として違和感なしと感じます
2021/10/17(日) 08:24:02.20ID:steRrM330
大文字→小文字への変換等の文字列長変わらない題材は
str[] で初期化しそうだわ
2021/10/17(日) 21:22:20.52ID:YXxqNhTYM
初期化のときだけ [] をキッチリポインタと区別するc の仕様がちょっと気持ち悪い
って感じかな
2021/10/17(日) 21:57:04.28ID:8CkFjl5X0
[] は記憶域の確保
ポインタは記憶域の操作
2021/10/18(月) 07:29:22.77ID:SjUVJOBmd
externや二次元配列でも区別しとるじゃろうが
元々違うものを区別されたからちゅうてガタガタぬかすなや
同じと思いたがるのが間違っとるんじや
744デフォルトの名無しさん (エムゾネ FFbf-mxW8)
垢版 |
2021/10/18(月) 16:00:11.31ID:r9t2S6+pF
char **hoge;
char *hage[];
好き嫌いが判れるな
2021/10/18(月) 16:05:46.60ID:3P96aY7G0
ウンコとカレーは別のものです
2021/10/18(月) 19:51:04.60ID:g0y5TC1t0
そもそも初期化の*と演算子の*だって違うものだからな……
2021/10/18(月) 20:04:38.45ID:o7eKMY2r0
関数の引数のary[]はポインタだって言ったじゃないですか
2021/10/18(月) 20:18:11.14ID:SjUVJOBmd
ついでに頓珍漢
749デフォルトの名無しさん (ワントンキン MMbf-t/lv)
垢版 |
2021/10/19(火) 07:28:30.98ID:KQylMF0MM
>>738
終端文字忘れてるからじゃないの?
750デフォルトの名無しさん (ワントンキン MMbf-t/lv)
垢版 |
2021/10/19(火) 08:18:32.37ID:KQylMF0MM
>>749
char *pか、勘違いすみません。
751デフォルトの名無しさん (アウアウウー Sacf-mxW8)
垢版 |
2021/10/20(水) 09:23:25.20ID:OEiI06HQa
すごい勘違いレス
2021/10/20(水) 18:53:19.81ID:X+tmlWS+d
if ((ss == 0) || (ss == 5) || (ss == 10) || (ss == 15) || (ss ==20) || (ss == 25) || (ss == 30) || (ss == 35) || (ss == 40) || (ss == 45) || (ss == 50) || (ss == 55)) {
hogehoge();
}
だいぶん無駄な書き方だと思いました
一桁の値が0が5の時に実行したいです
アドバイスお願いします
2021/10/20(水) 18:59:09.50ID:2b7An4Iy0
ss%5==0
2021/10/20(水) 19:00:41.26ID:X+tmlWS+d
>>752
int ss;
int sss = ss / 10;
if ((sss == 0) || (sss == 5)) {
hogehoge();
}

自己レス
こうですかね
2021/10/20(水) 19:01:44.45ID:X+tmlWS+d
>>753
どうもありがとうございました
756デフォルトの名無しさん (ワッチョイ 2b21-NRqJ)
垢版 |
2021/10/20(水) 19:41:14.72ID:+2OzLQ7p0
>>754
節子それ余りやない。ssss=ss-sss*10とかやらんと。

組み込みマイコンだと/,%なしで頑張る縛りプレーもあるで。自分がよくやるのは対応する値域を限定して、
掛け算と >> による割り算で計算する。それより難しいの頭がついてこん。
2021/10/20(水) 20:06:00.50ID:X+tmlWS+d
>>756
どうもありがとうございます

>>754って書いたけど
>>753が端的だったのでこれが楽ちんだと思って754は見直してませんでした
Arduinoで時計作りたくて触ってるところです
758デフォルトの名無しさん (ワッチョイ 2b21-NRqJ)
垢版 |
2021/10/20(水) 20:19:57.63ID:+2OzLQ7p0
>>757
ArduinoってUnoあたりは弱いマイコンなのにadafruitのサンプルとか浮動小数点演算してたり感覚おかしくなる。
1秒ごとの処理なら、1秒ごとにカウンタ増やして5になったら何かするって処理でもいいと思う。
使ってるマイコンが除算回路持ってるかは調べといたほうがいい。32bitマイコンでも割り算は省略されたり。
まぁ動きゃいいので効率や速度も捨てるのも、それが能動的な選択なら構わないとは思う。

ちなArduinoのスケッチは、古めのC++だったりするので、たまCで見慣れん文法が出て来る。
2021/10/21(木) 11:57:16.85ID:F1Ma0oSBM
if(++ss &5 && ss+=11) {....}
minutes=(ss &5)+ss/16*5;
2021/10/21(木) 11:59:08.14ID:F1Ma0oSBM
minutes=(ss & 7)+ss/16*5;
2021/10/22(金) 14:51:19.29ID:xwM6FSoTd
>>759
難しそうで理解できないです><

>>758
mmが2, 7, 12, 17, 22, 27, 32, 37, 42, 47, 52, 57の時に実行したい

int mm;
if (mm = 2) || (mm = 7) || (mm = 12) 略 {
hoge();
}

こう言った場合はカウンター使うんでしょうか?
2021/10/22(金) 14:54:54.89ID:xwM6FSoTd
>>761
mmが上の条件でなおかつmmがpmmとは異なりssが0のときに動かしたいです
2021/10/22(金) 14:57:33.61ID:xwM6FSoTd
>>753 これを応用して、mmから2を引いて5で割り切れたときですかね
2021/10/22(金) 15:05:16.53ID:1X6Ns9Hp0
witch (mm) {
case 2: case 7: case 12: case 17:
case 22: case 27: case 32: case 37:
case 42: case 47: case 52: case 57:
  hoge(); break;
default: break;
}
2021/10/22(金) 15:12:34.58ID:1X6Ns9Hp0
頭のsが落ちてた><
2021/10/22(金) 15:57:50.32ID:xwM6FSoTd
>>764
switchの存在忘れてました
ありがとうございます
やってみます
767デフォルトの名無しさん (ワッチョイ e910-kr9p)
垢版 |
2021/10/22(金) 17:17:41.96ID:ZQZyZs9H0
if( (mm>1) &&
(mm<58 ) &&
!( (mm-2)%5) ) {.....}
かな?
2021/10/22(金) 17:38:23.94ID:gkJZOHn00
((mm-2) % 5) == 0
!((mm-2) % 5)
(mm % 5) == 2

ふむ。 なやましい
2021/10/22(金) 18:24:39.18ID:xwM6FSoTd
>>768
ありがとうございます
3つ目ですかねー
770デフォルトの名無しさん (ワッチョイ 5d1b-gYUW)
垢版 |
2021/10/24(日) 23:50:25.11ID:P21IrDZK0
今から数年前はc言語マスターっていうコテハンがいたような覚えがあるんだけど今は見る影もなくなっちゃったな
今でも覗いているのかな
いなくなったらいなくなったで寂しいもんだ
771デフォルトの名無しさん (ワッチョイ 5d1b-gYUW)
垢版 |
2021/10/24(日) 23:54:50.86ID:P21IrDZK0
あと片山博文って奴もいたがあいつはtwitterで元気にやってるね
すっかりtwitterのit畑に馴染んでいる
772デフォルトの名無しさん (エムゾネ FFa2-iXiw)
垢版 |
2021/10/25(月) 10:50:24.50ID:vmRZrQEpF
ここは人減り杉たな
2021/10/25(月) 22:34:33.20ID:tqAHcDS70
#include<stdio.h>

void main(void){

puts("Hello world.");
}

Cの基礎。
2021/10/25(月) 22:51:17.12ID:dRHq7DJG0
>>773
mian の返却値を void にすんなよ。
2021/10/25(月) 23:12:03.34ID:0vce0GaV0
どこでも出口

exit(EXIT_SUCCESS);
2021/10/26(火) 01:39:39.55ID:M1juxUvT0
人が減ってる?
それじゃ俺も参加するか
よっこらC(セックス)
2021/10/26(火) 01:46:13.55ID:l3iKjiOk0
「初めてのC」ってタイトル見たとき、ちょっとドキドキしたw
2021/10/26(火) 02:22:35.07ID:LRGmoAXR0
みぁ〜ん
2021/10/26(火) 05:48:52.32ID:M1juxUvT0
みぁ〜ん
2021/10/26(火) 06:52:29.03ID:ch+2e+/f0
>>774
異常な執念で噛みつくやついるよな
void mainに親でも殺されたのかって感じ
2021/10/26(火) 11:35:56.09ID:l3iKjiOk0
トイレ使ったら水を流すだろ
782デフォルトの名無しさん (ワッチョイ e910-kr9p)
垢版 |
2021/10/26(火) 11:41:12.20ID:4NkYNYny0
ふんばっても何も出なかったからそのまま出てきたわ。
2021/10/26(火) 17:15:10.74ID:rbEPHvg70
なぜC言語は「言語」までつけて呼ぶのでしょうか
PASCAL言語とかFORTRAN言語とかPython言語とかいう言い方は聞いたことがないので気になりました
一文字で語呂が良くないから?
784デフォルトの名無しさん (オッペケ Sr11-gYUW)
垢版 |
2021/10/26(火) 17:16:53.12ID:iznG3/8mr
音節が一つだけだからでしょ
goと一緒
2021/10/26(火) 17:19:02.10ID:rbEPHvg70
>>784
仮に「F」なんていう言語があったとしたら、それには「言語」は付けないのが自然なんですかね
2021/10/26(火) 17:24:23.61ID:FOkaXEb/d
俺は日常Cと言ってる
2021/10/26(火) 17:30:07.02ID:TdYowdfsM
OとP以外存在しとるが
https://sites.google.com/site/sappariwiki/a2z-languages
788デフォルトの名無しさん (オッペケ Sr11-gYUW)
垢版 |
2021/10/26(火) 17:43:08.10ID:iznG3/8mr
>>785
fって一音節でしょ?
馬鹿なの?
2021/10/26(火) 17:50:47.85ID:JgL6RS+zM
またまたご冗談を
2021/10/26(火) 18:07:04.47ID:rbEPHvg70
>>788
馬鹿なんでしょうね
2021/10/26(火) 18:10:28.34ID:LRGmoAXR0
アルファベット一文字なら言語ってつける
Goだけなんか例外的なだけで
2021/10/26(火) 18:13:16.33ID:rbEPHvg70
>>791
これって日本特有なんですかね
2021/10/26(火) 18:19:10.90ID:l/KP9TR6M
普通に短すぎる識別子の弊害だろ
言語付けとけば>>777のレスは無かった
2021/10/26(火) 19:33:22.81ID:M1juxUvT0
日本語ではC言語で検索しやすくなるが外国はどうしてんだ?
C lang とかで検索してるのかな?
2021/10/26(火) 19:47:06.75ID:FOkaXEb/d
英語圏でもC languageとは言うね
2021/10/26(火) 21:52:27.56ID:ucHGO5Lk0
アセンブリ言語って自分的には違和感ないけど業界的にはどうなの?
2021/10/26(火) 21:56:53.26ID:ch+2e+/f0
普通だね
アセンブラ言語でもどっちでも
しょせんカタカナだし
ドヤるとバカっぽいから放置
798デフォルトの名無しさん (ワッチョイ 13ad-BvZE)
垢版 |
2021/10/30(土) 00:17:48.25ID:0q4JizrL0
もう英字一文字の言語は飽和状態だからこれからは平仮名一文字とか漢字一文字の言語名にした方が良いな。
799デフォルトの名無しさん (ワッチョイ 13ad-OgfA)
垢版 |
2021/10/30(土) 00:23:08.83ID:0q4JizrL0
ʗ言語
2021/10/30(土) 08:25:14.25ID:HlbDM8n/0
ツー言語 (゚∀゚)
2021/10/30(土) 11:53:47.66ID:A30JUN42d
>>784
日本語(外来語含む)の音韻は音節ではなくモーラ(=拍。俳句の数え方)で数えるべきで、
C(しい)もGo(ごお)も2モーラ
>>785>>788
F(えふ)も同じく2モーラ

まあ、別に2モーラ以下なら「言語」を付けるという規則性もなさそうだけどね
Java(じゃば)やLua(るあ)も2モーラだし
802デフォルトの名無しさん (ワッチョイ 13ad-BvZE)
垢版 |
2021/10/30(土) 17:29:52.20ID:0q4JizrL0
私意言語
803デフォルトの名無しさん (ワッチョイ b11b-lV4V)
垢版 |
2021/10/30(土) 18:01:56.38ID:zJlZfWf60
>>801
普通英語で検索するよね?
c languageとかgolangとか
804デフォルトの名無しさん (ワッチョイ b11b-lV4V)
垢版 |
2021/10/30(土) 18:03:58.48ID:zJlZfWf60
luaって調べたら月の画像が出てきてめちゃくちゃ怖いぞ
2021/10/30(土) 19:36:45.48ID:d9y/i02Wr
月が怖いってサテライトキャノンでも撃たれたのか?
806デフォルトの名無しさん (アウアウウー Sa9d-48dE)
垢版 |
2021/10/30(土) 19:51:07.93ID:lpthGY+1a
月を怖がる人ってたまにいるけど
前世とか今世で悪いことでもしたんかね
807デフォルトの名無しさん (ワッチョイ b11b-lV4V)
垢版 |
2021/10/30(土) 20:22:41.40ID:zJlZfWf60
天体の画像が怖い
2021/10/30(土) 20:27:03.94ID:nIglmucmH
>>806
欧米では、月の光は人を基地外にする、とかいうそうですよ
確か狼男も満月だったっけ、いや、それは送り狼だったっけ?
2021/10/30(土) 20:59:50.65ID:f9Pytl6VM
お仕置きでもされたのかな
810デフォルトの名無しさん (ワッチョイ b11b-lV4V)
垢版 |
2021/10/30(土) 21:01:00.69ID:zJlZfWf60
天体恐怖症なんやワイ
木星とか海王星とか怖い
2021/10/30(土) 22:33:29.21ID:d9y/i02Wr
地球は恐くないん?
2021/10/30(土) 23:11:54.45ID:w/6Ssgd00
裏側にいる事に気がつくと、落ちてしまうそうだ
813デフォルトの名無しさん (ワッチョイ b11b-lV4V)
垢版 |
2021/10/30(土) 23:41:41.51ID:zJlZfWf60
>>811
地球も太陽も怖いです
あと小惑星も怖い
あと月の裏側もマジでこわい
814デフォルトの名無しさん (ワッチョイ b11b-lV4V)
垢版 |
2021/10/30(土) 23:42:05.22ID:zJlZfWf60
火星の衛星とかも怖いです
歪な形してるやつ
815デフォルトの名無しさん (ワッチョイ b11b-lV4V)
垢版 |
2021/10/30(土) 23:43:09.25ID:zJlZfWf60
冥王星の最新画像見たけどめちゃくちゃ怖くて直視できなかった
2021/10/31(日) 09:06:05.96ID:eEOPPlKd0
アロコスなんかカワイイ形してんじゃん
817デフォルトの名無しさん (アウアウウー Sa9d-48dE)
垢版 |
2021/10/31(日) 11:07:20.50ID:dKAtRzTxa
乙py
乙py
818デフォルトの名無しさん (アウアウウー Sa9d-48dE)
垢版 |
2021/10/31(日) 11:30:55.69ID:dKAtRzTxa
>>814
https://www.youtube.com/watch?v=bEwWCXxaVR4
819デフォルトの名無しさん (ワッチョイ b11b-lV4V)
垢版 |
2021/10/31(日) 11:33:04.24ID:xmsO/hLH0
>>818
グロ
2021/10/31(日) 11:46:46.80ID:TjuXDVeD0
NHK-BSプレミアム『グレートネイチャー』の宣伝臭が鼻につくくらいで
扱っている題材は台湾の自然、どこがグロなんだ?
821デフォルトの名無しさん (ワッチョイ b11b-lV4V)
垢版 |
2021/10/31(日) 14:17:04.25ID:xmsO/hLH0
>>820
地球の中心コアへの旅っていう関連動画がグロい
822デフォルトの名無しさん (ワッチョイ 13ad-BvZE)
垢版 |
2021/11/01(月) 03:55:44.21ID:6HuVbq6K0
饅頭怖い
823デフォルトの名無しさん (ワッチョイ 2bbd-ruXn)
垢版 |
2021/11/01(月) 11:25:10.37ID:/Zy4WfCe0
lu分解をc言語でやりたく、次のようなコード(1部分になります)を書いたのですが、y0の値が0.8になるはずなのに全く違うものとなってしまいます。原因が全くわからないのですが、どこを改良すればよいのでしょうか。

for(int n = 1; n <= M+1; n++){
t = n*dt;

for(int i = 0; i <= N; i++){
x[i] = 0.0;
}

/* Ax = uを解く */
/* Ly = u */
y[0] = u[0]/l[0][0];
for (int i = 1; i <= N; i++){
y[i] = (u[i] - l[1][i]*y[i-1])/l[0][i];
}

/* Ux = y */
x[N] = y[N];
for (int i = N-1; i >= 0; i--){
x[i] = y[i] - m[i]*y[i+1];
}

/* 更新 */
for(int i = 0; i <= N; i++){
u[i] = x[i];
}
}
824デフォルトの名無しさん (エムゾネ FF33-48dE)
垢版 |
2021/11/01(月) 12:00:24.14ID:z/x9VzKbF
int → double または float
2021/11/01(月) 13:05:24.25ID:qmVDupeY0
x, y, l, m, u の宣言で添え字のとりえる範囲分はちゃんと確保してる?

(lu分解として正しいかどうかはおいといて)ループのコードから
x 0..N まで → 最低限 double x[N+1];
y 0..N まで → 最低限 double y[N+1];
u 0..N まで → 最低限 double m[N+1];
m 0..N-1 まで → 最低限 double m[N];
l [0][0]..[1][N] まで → 最低限 double l[2][N+1];
826デフォルトの名無しさん (ワッチョイ 2bbd-ruXn)
垢版 |
2021/11/01(月) 15:07:15.16ID:/Zy4WfCe0
最初に宣言して確保してるので、大丈夫だと思うんですが、、
いちおうx,y,l,m,uをそれぞれ出力してみたのですが、yだけ間違えた値になってしまいます。
ループの順番とかがおかしいんですかね?
827デフォルトの名無しさん (ワッチョイ 13ad-BvZE)
垢版 |
2021/11/01(月) 19:03:15.19ID:6HuVbq6K0
全ての変数の宣言を書け
2021/11/01(月) 20:58:39.67ID:6+jC3RjR0
最小限再現できるコードを書いてもらわんと指摘することはできんねぇ
(そして最小限再現にシェイプアップする過程でやらかしを見つける)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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