2013-08-01 4 views
-2

2 단어를 취하여 길이를 계산하는 함수를 작성해야합니다. 나는 아래에 하나를 썼지 만,이 코드는 첫 번째 단어에 대해서만 woks. 전체 문장 수를 계산하려면 어떻게 향상시킬 수 있습니까? 당신은 안전하게 fgets로 사용할 수 있습니다아래의 함수가 원하는대로 작동하지 않습니다.

#include <stdio.h> 
int findlen(int *s); 

int main(void) 
{ 

    char string1[80]; 
    printf("Enter a string: "); 
    scanf("%s", string1); 

    printf("Lenght of %s is %d\n", string1, findlen(string1)); 

} 

//find the length of the inputted string 
int findlen(char *s) 
{ 

    int count = 0; 
    while (*s != '\0') 
    { 
    s++; 
    count++; 
    } 

    return count; 
} 
+1

, 당신은 단지 하나의 문자열을 받고 있습니다. – mah

+4

일반적으로'scanf()'를 사용하지 마십시오. 나는 그것을 사용하는 것에 대한 어떤 좋은 이유도 아직 보지 못했다. 'fgets()'와 때로는'fgetc()'가 적절하다. ** 실제로 당신이 생각하는 것 **을한다. –

답변

6

scanf\n

0

까지 전체 문자열을 읽어 만 .. (예) 공간이 나타납니다 때 중단 ..

fgets을 시도해보십시오 한 단어 입력을 취할 것

From here :

char *fgets(char *s, int size, FILE *stream); 
파일에서 라인을 얻을 대신, 그것은 당신의 버퍼가 얼마나 큰 모르고 너무 큰 라인을 읽을 때 충돌 할 gets를 사용한 경우

fgets(string1, sizeof(string1), stdin); 

:

그래서 당신의 scanf와 라인을 교체합니다. 당신이 당신의 문자열의 길이를 알고 싶다면

다음, 당신은 string.h에서 strlen 기능을 사용할 수 있습니다 : 그것은 '까지 문자열을 검색합니다

#include<string.h> 
... 
printf("Lenght of %s is %d\n", string1, strlen(string1)); 
0

사용 [%^\ n을] 형식 지정자 있도록 \ n '을 만나면 공백이있는 문자열을 검색하는 문제 (예 : "hello word")가 해결됩니다. 당신은 단지 하나의 '%의 s` 인수 하나'는 scanf()를`수행하고 있기 때문에

scanf("[%^\n]",straddr); 
관련 문제