You are viewing a single comment's thread. Return to all comments →
I'm having trouble using C ,even if the output is the same as the input .
#include <stdio.h> #include <string.h> #include <stdlib.h> void Split(char Case, char *IName); void Combine(char Case, char *IName); void Switch(char Op, char Case, char *IName); void Split_IName(char *IName); void CombineIName(char *IName); int main() { char Buffer[128]; char *Op = NULL; char *Case = NULL; char **IName = NULL; int line = 0; while (fgets(Buffer, 128, stdin) != NULL) { if (strchr(Buffer, '\n')) { Buffer[strcspn(Buffer, "\n")] = '\0'; } Op = realloc(Op, (line + 1) * sizeof(char)); Case = realloc(Case, (line + 1) * sizeof(char)); IName = realloc(IName, (line + 1) * sizeof(char*)); IName[line] = malloc(48); sscanf(Buffer, "%c;%c;%[^\n]", &Op[line], &Case[line], IName[line]); line++; memset(Buffer, '\0', sizeof(Buffer)); } for (int i = 0; i < line; i++) { Switch(Op[i], Case[i], IName[i]); printf("%s\n", IName[i]); free(IName[i]); } free(IName); free(Op); free(Case); return 0; } void Switch(char Op, char Case, char *IName) { switch (Op) { case 'S': Split(Case, IName); break; case 'C': Combine(Case, IName); break; default: break; } } void Split(char Case, char *IName) { switch (Case) { case 'M': IName[strcspn(IName, ")")] = '\0'; IName[strcspn(IName, "(")] = '\0'; Split_IName(IName); break; case 'C': if ((int)IName[0] <= 90 && (int)IName[0] >= 65) { IName[0] = (char)((int)IName[0] + 32); } Split_IName(IName); break; case 'V': Split_IName(IName); break; default: break; } } void Combine(char Case, char *IName) { switch (Case) { case 'C': if ((int)IName[0] >= 97 && (int)IName[0] <= 122) { IName[0] = (char)((int)IName[0] - 32); } CombineIName(IName); break; case 'M': CombineIName(IName); strcat(IName, "()"); break; case 'V': CombineIName(IName); break; default: break; } } void Split_IName(char *IName) { int index2, index = 0; int len = strlen(IName); while (IName[index]) { if ((int)IName[index] <= 90 && (int)IName[index] >= 65) { IName[index] = (char)((int)IName[index] + 32); index2 = len; while (index2 > index) { IName[index2] = IName[index2 - 1]; index2--; } len++; IName[index2] = ' '; } index++; } } void CombineIName(char *IName) { int index2, index = 0; while (IName[index]) { if (IName[index] == ' ') { if ((int)IName[index + 1] >= 97 && (int)IName[index + 1] <= 122) { IName[index + 1] = (char)((int)IName[index + 1] - 32); } index2 = index; while (IName[index2]) { IName[index2] = IName[index2 + 1]; index2++; } } index++; } } index++; } }
Seems like cookies are disabled on this browser, please enable them to open this website
Camel Case 4
You are viewing a single comment's thread. Return to all comments →
I'm having trouble using C ,even if the output is the same as the input .