簡體   English   中英

scanf() C 中的多個單詞

[英]scanf() multiple words in C

我需要一個簡單的函數,可以將多個單詞讀入 C 中的字符串,有點像 Java 中的Scanner.nextLine()或 C# 中的Console.ReadLine() ,但我似乎無法在任何地方找到一個簡單的方法,我試過了各種各樣的東西,但它們似乎都不是 100% 的。

你可以使用fgets

char *fgets(char *str, int n, FILE *stream)

請注意, fgets 會讀取直到達到大小 n、換行符或 EOF。 這樣做是為了避免緩沖區溢出,因此您需要確保緩沖區足夠大以存儲字符串。

scanf就是你想要的:

#include <stdio.h>

int main(void)
{
    char string[50];
    scanf(" %49[^\n]s",string);

    printf("you entered: %s\n",string);
}

你可以按照這個:

char str[100];// as length of the total words neded
    fgets(str,100,stdin)

        printf("output: %s",str);

    return 0;

使用 fgets 將輸入字符串解析為字符緩沖區。

char * fgets ( char * str, int num, FILE * stream );

這是更好描述的鏈接

然后使用 sscanf 將此字符串解析為您需要的任何內容。

int sscanf ( const char * s, const char * format, ...);

這是更好描述的鏈接

這會刪除 fgets 返回的字符串中包含的 '\\n' 字符,從而使該函數實際上等同於流行托管語言中的函數:

//gets a line from the specified stream
int getline(char* charArray, int maxLength, FILE* stream) {
    int i;
    if (fgets(charArray, maxLength, stream) == NULL)
        return 1;  //some error occurred
    for (i = 0; i < maxLength; i++) {
        if (charArray[i] == '\n') {
            if (i != 0 && charArray[i - 1] == '\r') //cater for windows line endings
                i--;
            charArray[i] = '\0';
            return 0;  //all's well that ends well
        } else if (charArray[i] == '\0')
            return 0;  //smooth sailing fam
    }
    return 2;  //there was no string terminator
}

干得好:

#include "stdio.h"

//gets a line from the specified stream
int getline(char* charArray, int maxLength, FILE* stream) {
    int i;
    if (fgets(charArray, maxLength, stream) == NULL)
        return 1;  //some error occurred
    for (i = 0; i < maxLength; i++) {
        if (charArray[i] == '\n') {
            if (i != 0 && charArray[i - 1] == '\r') //cater for windows line endings
                i--;
            charArray[i] = '\0';
            return 0;  //all's well that ends well
        } else if (charArray[i] == '\0')
            return 0;  //smooth sailing fam
    }
    return 2;  //there was no string terminator
}

int main() {
    char money[4];
    printf("How much money do you have on you? ");
    getline(money, 4, stdin);
    printf("Oh really? $%d? Good. :)\n", atoi(money));
    char string[4];
    printf("Where is our next lesson?\n");
    getline(string, 4, stdin);
    printf("%s", string);
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM