所以我有一個由空格分隔的單詞組成的字符數組。 從輸入讀取數組。我想打印以元音開頭的單詞。如何在C中打印字符串數組的特定部分?
我的代碼:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *insertt (char dest[100], const char sou[10], int poz) {
int cnt=0;
char *fine = (char *) malloc(sizeof(char) * 3);
char *aux = (char *) malloc(sizeof(char) * 3);
strncpy(fine,dest,poz);
strcat(fine,sou);
do {
aux[cnt]=dest[poz];
poz++;
cnt++;
}
while (poz<=strlen(dest));
strcat(fine,aux);
free(aux);
return fine;
}
int check_vowel(char s) {
switch (s) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
return 1;
default: return 0;
}
}
int main (void) {
const char spc[]=" ";
char s[100];
char *finale = (char *) malloc(sizeof(char) * 3);
int beg,len,aux; //beg - beginning; len - length;
int i = 0;
printf("s=");
gets(s);
finale = insertt(s,spc,0); //the array will start with a space
do {
if (finale[i]==' ' && check_vowel(finale[i+1])==1) {
beg=i+1; //set start point
do { //calculate length of the word that starts with a vowel
len++;
}
while(finale[len]!=' '); //stop if a space is found
printf("%.*s\n", len, finale + beg); //print the word
}
i++;
}
while (i<=strlen(finale)); //stop if we reached the end of the string
free(finale);
return 0;
}
的check_vowel函數將返回1,如果字符是一個元音,否則返回0 的insertt功能將插入一個爲const char成焦炭從一個指定的位置,我用它在數組的開頭插入一個空格。
The input: today Ollie was ill
The output: Segmentation fault (core dumped)
Preferred output:
Ollie
ill
我敢肯定,問題是在主要do-while循環的地方,但我只是想不出什麼可能是它... 的2個功能正常工作。 謝謝!
正如我所說,2個功能(insertt和檢查元音)正常工作,他們做的正是它們是什麼應該這樣做:) –
將輸入讀入字符串數組不是更容易嗎? – LihO
適合我:jrenner @ pc:〜$。/ test s =今天Ollie生病了 Ollie ill – talloaktrees