• 締切済み

ファイルの入出力を行って文字を変換する

入力するファイルにa~zを記入しておき、 出力するファイルにaなら1、bなら2、zなら26に変換させたいのですがどうしたらよいでしょうか? #include <stdio.h> #include <string.h> #define DELIMITER "/ ," /* 区切り文字 */ int main(void) { FILE *fin,*fout; int count=0; int i; char s[256], s2[256]; char alpha[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; int kazu[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26}; char *taken; char *strch[50]; if( (fin=fopen("file1.txt","r"))==NULL) { printf("入力ファイルがオープンできません\n"); exit(EXIT_FAILURE); } if( (fout=fopen("file2.txt","w"))==NULL) { printf("出力ファイルがオープンできません\n"); exit(EXIT_FAILURE); } while(fgets(s,256,fin)!=NULL) { while (token != NULL) { strch[count]=token; token = strtok(NULL, DELIMITER); count++; } memset(s2, NULL, sizeof(s2)); fprintf(fout,"%d\n",s2); } fclose(fin); fclose(fout); return 0; }

みんなの回答

回答No.1

#include <stdio.h> #include <string.h> int conv(char c) { char *p, *a = "abcdefghijklmnopqrstuvwxyz"; if((p = strchr(a, c)) != NULL) return p - a + 1; return 0; } int conv2(char c) { int p; if(0 <= (p = c - 'a') && p <= 26) return p + 1; return 0; } int main(void) { char *a = "abcdefghijklmnopqrstuvwxyz,.;:"; int i; for(i = 0; i < 30; i ++){ printf("'%c' == %d %d\n", a[i], conv(a[i]), conv2(a[i])); } return 0; }

x_rider2
質問者

お礼

ありがとうございました