2 svar
58 visningar
mattegeni2000 behöver inte mer hjälp
mattegeni2000 154
Postad: 17 okt 2022 21:56

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;

}
CurtJ 1190
Postad: 17 okt 2022 22:43 Redigerad: 17 okt 2022 22:48

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.

mattegeni2000 154
Postad: 18 okt 2022 08:15

Tack så mycket, jag fixade programmet genom att sätta en break; under  p=&arr[i+1];

Svara
Close