###実現したい事
C言語でa(〇,〇)といった文字列を読み込んで〇の部分の文字を表示させたいと考えているのですが、実行した際に処理が止まってしまって上手くいきません。エラーも出てくれないので何がいけないのかわからないので、原因と解決策が分かる方回答お願いします。
###ソース
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void){ char word1[20] , word2[20]; char *a, *b, *ac, *bc; char *decidea1, *decidea2, *decideb1, *decideb2, *kekka; int i, j, k; strcpy(word1, "a(x,f(y))"); strcpy(word2, "b(y,z)"); ac = (char*)malloc(10); bc = (char*)malloc(10); a = word1; b = word2; ac = strchr(a, (int)','); bc = strchr(b, (int)','); i = ac - a-1; j = ac - a+1; if(a[i] >= 'a' && a[i] <= 'z'){ printf("%c", a[i]); decidea1[0] = a[i]; printf("%d,%d", i, j); } else{ sprintf(decidea1, "%c%c%c%c ", a[i-3], a[i-2], a[i-1], a[i]); } printf("aの前は%sです\n", decidea1); k = j+1; if(a[j] >= 'a' && a[j] <= 'z'){ while(a[k] != '\0'){ printf("%c\n", a[j]); if(a[k] == '('){ sprintf(decidea2, "%s ", decidea1); printf("%s\n", decidea2); break; } else{ decidea2[0] = a[j]; } k++; } } else{ sprintf(decidea2, "%c%c%c%c ", a[j], a[j+1], a[j+2], a[j+3]); } printf("aの後ろは%sです\n", decidea2); i = bc - b-1; j = bc - b+1; if(b[i] >= 'a' && b[i] <= 'z'){ decideb1[0] = b[i]; } else{ sprintf(decideb1, "%c%c%c%c ", b[i-3], b[i-2], b[i-1], b[i]); } printf("bの前は%sです\n", decideb1); k = j+1; if(b[j] >= 'a' && b[j] <= 'z'){ while(b[k] != '\0'){ if(b[k] == '('){ sprintf(decidea2, "%c%c%c%c ", b[j], b[j+1], b[j+2], b[j+3]); break; } else{ decideb2[0] = b[j]; printf("%s\n", decideb2); } k++; } } else{ sprintf(decideb2, "%c%c%c%c ", b[j], b[j+1], b[j+2], b[j+3]); } printf("bの後ろは%sです\n", decideb2); sprintf(kekka, "%s %s, %s %s", decidea1, decideb1, decidea2, decideb2); return 0; }
###補足
ソースは現段階ではベタ打ちです。
ソースの例ではxとf(y)とyとzが表示されてほしいです。
a(b(x,y),c(z,t)) にも対応せんならん? だとしたらかなり厄介
回答4件
あなたの回答
tips
プレビュー