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

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

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

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Q&A

解決済

2回答

5295閲覧

急募 なぜmacTerminalだと動かないのか

退会済みユーザー

退会済みユーザー

総合スコア0

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

0グッド

0クリップ

投稿2020/06/30 11:33

前提・実現したいこと

パスワードの変更プログラムを作成したのですが、macのTerminal上で起動すると以下のエラーが出るのに、なぜかWindows上では成功します。strcpy関数の部分を消すとmacでも成功するので、原因はそこだと考えています。なぜmac上だと失敗するのか、また、改善案があれば教えて欲しいです。

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

zsh: illegal hardware instruction

該当のソースコード

#include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char filename[]="database.txt"; FILE *fp; int i; char pass[2][8]; char current_ps[8]="pswrd002"; char new_ps[8]; fp=fopen(filename,"r"); for(i=0;i<2;i++){ fscanf(fp,"%s",pass[i]); } fclose(fp); while(1){ printf("現在のパスワードを入力してください>"); scanf("%s",current_ps); if(strcmp(pass[1],current_ps)==0) break; }//パスワード認証 printf("新しいパスワードを入力してください>"); scanf("%s",new_ps); printf("新しいパスワードは%sとなりました。\n",new_ps); strcpy(current_ps,new_ps); printf("%s",new_ps); return 0; }

試したこと

windows上での実行(なぜか成功)

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

初心者です。

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

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

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

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

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

guest

回答2

0

char pass[2][8];
char current_ps[8]="pswrd002";
char new_ps[8];

何文字のパスワードを入力しましたか?
上記のコードを見ると、8文字分しか確保されていないため、実質 7文字までとなります。 (文字列の最後を示す '\0'が必要なため)

8文字以上入れてませんか? その場合、動作は未定義となります。
Windowsでは運よく動いただけではないかと思います。

投稿2020/06/30 11:40

pepperleaf

総合スコア6385

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

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

退会済みユーザー

退会済みユーザー

2020/06/30 11:46

ありがとうございます。無事解決いたしました。
guest

0

ベストアンサー

C

1 char current_ps[8] = "pswrd002";

配列のサイズが足りていません。

投稿2020/06/30 11:36

SHOMI

総合スコア4079

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

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

退会済みユーザー

退会済みユーザー

2020/06/30 11:40

回答ありがとうございます。 大変申し訳ないのですがプログラミング初心者のため、改善法を教えていただけないでしょうか。 また、8文字のパスワードなら[8]ではなぜ足りないのでしょうか。
SHOMI

2020/06/30 11:43

文字列の終端にはヌル文字(\0)が付くため、追加で1文字分必要です。
退会済みユーザー

退会済みユーザー

2020/06/30 11:51

丁寧なご返答ありがとうございます。無事解決いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問