fgetsで入力した数字が正しく表示されません
初歩的な問題ですがおしえてください。お願いします。
include<stdio.h>
void swap(int *,int *);
int main(void){
int x,y;
char s[2];
printf("2つの整数値を入力してください:");
//scanf("%s",s);
fgets(s,sizeof(s),stdin); //*1
s[1] = '\0';//改行削除
scanf("%d",&y);
// x = atoi(s[0]);
x = s[0];
printf("変数xは%d、変数yの値は%dです。\n",s[0],y); //*1で入力したxが正しく表示されない
swap(&x,&y);
printf("swap()を呼び出した後の変数xの値は%d,変数yの値は%dです。\n",x,y); //swapは上手くいく
return 0;
}
void swap(int *x,int *y){
int temp;
temp = *x;
*x = *y;
*y = temp;
}
fgets
-
やんち
Re: fgets
文字コードを表示しているんじゃないか。
ASCII 文字コード表を参照して見てください。
・ASCII文字コード : IT用語辞典
http://e-words.jp/p/r-ascii.html
後、フォーラムルールも確認しておいてください。
・フォーラムルール
http://dixq.net/board/board.html
ASCII 文字コード表を参照して見てください。
・ASCII文字コード : IT用語辞典
http://e-words.jp/p/r-ascii.html
後、フォーラムルールも確認しておいてください。
・フォーラムルール
http://dixq.net/board/board.html
-
drow
Re: fgets
すいません
[1] 質問文
[1.1] 自分が今行いたい事は何か
昔勉強した課題の復讐
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
先ほど記載しました
[1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
fgets関数を使って、入力すると入力した数字のアスキーコードが表示されてしまう。
[1.4] 今何がわからないのか、知りたいのか
fgets関数を使って、3と入力したら、表示の所で(swap後の表示も)3と表示されるようにしたいがわからない。
アスキーコードが表示されるのではなく、入力した数字が表示されるようにしてほしい
[2] 環境
[2.1] OS : Windows, Linux等々
[2.2] コンパイラ名 : gcc
[3] その他
大学で習いはじめて2年目です
[1] 質問文
[1.1] 自分が今行いたい事は何か
昔勉強した課題の復讐
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
先ほど記載しました
[1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
fgets関数を使って、入力すると入力した数字のアスキーコードが表示されてしまう。
[1.4] 今何がわからないのか、知りたいのか
fgets関数を使って、3と入力したら、表示の所で(swap後の表示も)3と表示されるようにしたいがわからない。
アスキーコードが表示されるのではなく、入力した数字が表示されるようにしてほしい
[2] 環境
[2.1] OS : Windows, Linux等々
[2.2] コンパイラ名 : gcc
[3] その他
大学で習いはじめて2年目です
Re: fgets
>fgets関数を使って、3と入力したら、表示の所で(swap後の表示も)3と表示されるようにしたいがわからない。
まず、アスキーコード表でググって、文字の0~9までのアスキーコードを調べましょう。
文字3のアスキーコードは16進数で○○Hですね(注:○は伏せ字です。Hは16進数の意味)
では、これを数字の3にするには、xxHを引けばいいですね。(xxも伏せ字)
つまり、○○H-xxH=3 なので
x = s[0]-xxH;
もちろん、hangmaさんが仰っているように、atoiを使ってもかまいません。
数字が1桁とは限らないので、もう少し工夫が必要だと思いますが。
まず、アスキーコード表でググって、文字の0~9までのアスキーコードを調べましょう。
文字3のアスキーコードは16進数で○○Hですね(注:○は伏せ字です。Hは16進数の意味)
では、これを数字の3にするには、xxHを引けばいいですね。(xxも伏せ字)
つまり、○○H-xxH=3 なので
x = s[0]-xxH;
もちろん、hangmaさんが仰っているように、atoiを使ってもかまいません。
数字が1桁とは限らないので、もう少し工夫が必要だと思いますが。
non