Programmeringshjälp C
Tjenare!
Sitter här med en programmeringsuppgift och har fastnat totalt på vissa av deluppgifterna. Uppgiften till hela handlar om ett textprogram där man ska först välja alternativ, exempelvis split text, ändra från liten till stort bokstav och tvärtom eller addera en bokstav i slutet av varje ord. Jag har lyckats lösa stor/liten bokstav, samt split text (även om den inte är med i denna kod, klasskompisen som har den versionen).
Det jag inte får att funka är skriva ut en bokstav i arrayen. Som ni ser i koden nedanför så har jag skapat två fält, text[100] och text1[100]. Sen när man väljer case och skriver in sina meningar, exempelvis "Hej, det är fint väder i Sverige idag" och lägger den i text, så får jag inte det att skriva ut text[1], där "e" bör ligga. Det blir inget fel när jag debuggar, det är bara att den printar en tom rad när jag använder [printf("%s", text[1]);. Har setat och testat sen igår utan att komma någon någonvart, testat kopiera över text till text1.
Jag antar att jag gör något kopiöst fel när jag anropar en bokstav i stringen eller att jag gör något fel när jag läser in skriften till variabeln. Löser jag detta så ska jag kunna lösa de ofärdiga casen förhoppningsvis av mig själv.
Så, någon där ute som kan hjälpa en stackare?
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <ctype.h>
void tolower_str(char* to, const char* from)
{
int i = 0;
for (; from[i] != '\0'; i++)
to[i] = tolower(from[i]);
to[i] = '\0';
}
void toupper_str(char* to, const char* from)
{
int i = 0;
for (; from[i] != '\0'; i++)
to[i] = toupper(from[i]);
to[i] = '\0';
}
void count_word(char* a)
{
int i = 0, word = 0;
for (; a[i] != '\0'; i++)
if (isspace(a[i])) {
++word;
}
printf("Words: %d\n", word);
}
void count_space(char* a)
{
int i = 0, space = 0;
for (; a[i] != '\0'; i++)
if (isblank(a[i])) {
++space;
}
printf("' ': %d\n", space);
}
int main()
{
int choice;
char text[100], text1[] = "";
printf("Enter a number to choose option:\n1. Split text.\n2. Upper case to lower case.\n"
"3. Lower case to upper case.\n4. Remove character.\n5. Add a character.\n"
"6. Replace a character.\n7. Statistics.\n8. Exit.\nEnter an option: ");
scanf("%d", &choice);
getchar();
switch (choice)
{
case 1: // Split text
printf("Enter a string up to 100 characters: ");
fgets(text, 100, stdin);
break;
case 2: // From upper to lower
printf("Enter a string up to 100 characters: ");
fgets(text, 100, stdin);
tolower_str(text1, text);
printf("%s", text1);
break;
case 3: // From lower to upper
printf("Enter a string up to 100 characters: ");
fgets(text, 100, stdin);
toupper_str(text1, text);
printf("%s", text1);
break;
case 4: // Remove character
break;
case 5: // Add character
break;
case 6: // Replace a character
break;
case 7: // Statistics
printf("Enter a string up to 100 characters: ");
fgets(text, 100, stdin);
count_word(text);
printf("Characters: %d\n", strlen(text)-1);
count_space(text);
break;
case 8:
printf("Exiting application.");
exit(0);
break;
default: printf("Wrong number!\n");
break;
}
return main();
}