teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

strcpyの第2引数の文字表記 困っている個所:実行後のファイルダンプ

2020/11/02 05:09

投稿

ken21
ken21

スコア17

title CHANGED
File without changes
body CHANGED
@@ -17,8 +17,8 @@
17
17
  →ファイル形式を指定しているのはbが選択された場合に対応するためです。
18
18
 
19
19
  困っている個所
20
- 以下のようにコードを書いていますが、openMode, filetypeもにどうやらargvのポイン渡されているようです。
20
+ 以下のようにコードを書いていますが、実行するファルダ発生します。
21
- コマンドラインで入力した数字、ファイル形式の文字をchar型の仮引数へ渡したいのですがどのようにすればよいでしょうか。
21
+ どのように変更すればopenModeStrにオープンモードの文字列を格納し、表示させることが出来るでしょうか。
22
22
 
23
23
  ```ここに言語を入力
24
24
  #include<stdio.h>
@@ -29,36 +29,42 @@
29
29
 
30
30
  int main(int argc, char *argv[])
31
31
  {
32
- char openModeStr[4] = "\0";
33
- char openMode
32
+ char openModeStr[4];
34
- int check = makeModeStr(argv[1][0], argv[2][0], openModeStr);
33
+ int check = makeModeStr(argv[1][0], argv[2][0], openModeStr);
35
-
34
+
36
- printf("openModeStr = %s\n", openModeStr);
35
+ printf("openModeStr = %s\n", openModeStr);
37
-
36
+
38
- return 0;
37
+ return 0;
39
38
  }
40
39
 
41
40
  int makeModeStr(char openMode, char fileType, char *openModeStr){
41
+
42
+
43
+ if (openMode == '1') {
44
+ strcpy(openModeStr, "r");
45
+ }
46
+
47
+ else if (openMode == '2') {
48
+ strcpy(openModeStr, "w");
49
+ }
50
+ else if (openMode == '3') {
51
+ strcpy(openModeStr, "a");
52
+ }
53
+ else if (openMode == '4') {
54
+ strcpy(openModeStr, "r+");
55
+ }
56
+ else {
57
+ strcpy(openModeStr, "w+");
58
+ }
42
59
 
43
-
44
- if (openMode == "1") {
60
+ if (fileType == 'b') {
45
- strcpy(opneModeStr, "r");
61
+ strcat(openModeStr, "b");
46
62
  }
47
-
48
- else if (openMode == "2") {
63
+
49
- strcpy(opneModeStr, "w");
50
- }
51
- else if (openMode == "3") {
52
- strcpy(opneModeStr, "a");
53
- }
54
- else if (openMode == "4") {
55
- strcpy(opneModeStr, "r+");
56
- }
57
- else {
58
- strcpy(opneModeStr, "w+");
59
- }
60
-
61
- return 0;
64
+ return 0;
62
65
  }
63
66
 
67
+
68
+
69
+
64
70
  ```