Programmet skriver inte ut det tredje ordet
Litet kort om mitt program: Jag ska skriva ett program som låter användaren mata in en mening. Programmet ska sedan skriva ut meningen från och med det tredje ordet.
Det problem jag har är om jag matar in t.ex. "jag heter kevin" så skriver den ut strängen är för kort, men korrekt output skulle vara att skriva ut "kevin" - alltså från och med det tredje ordet.
Vad har jag gjort ör fel
#include <stdio.h>
#include <string.h>
#define SIZE 100
int main(void)
{
char arr[SIZE];
char* p = NULL;
int count = 0;
printf("Enter a sentence:");
fgets(arr, SIZE, stdin);
for (int i = 0; i < strlen(arr); i++) {
if (arr[i] == ' ') {
count++;
}
}
if (count <2) {
printf("The sentence is to short!\n");
}
else {
count = 0;
for (int i = 0; i < strlen(arr); i++) {
if (arr[i] == ' ') {
count++;
}
if (count == 2) {
p = &arr[i + 1];
}
}printf("%s\n", p);
}
return 0;
}
Du måste bryta exekveringen när du kommit upp till count == 2 och satt p annars flyttas p till slutet av strängen innan loopen lämnas. Då pratar jag om for-loopen i din else-sats. I övrigt borde det fungera som du avser. Det finns kanske enklare sätt att lösa det men allt som fungerar och går att förstå är i regel ok.
Tack så mycket, jag fixade programmet genom att sätta en break; under p=&arr[i+1];