我想按用户接收名称。之后,我想在屏幕上打印收到的名称。例如 :

-扫描:

roy
john
malw


- 打印:

roy
john
malw


码:

#include <stdlib.h>
#include <stdio.h>

int main ()
{
    int i;
    char *aer[4];
    char *(*pter)[4] = &aer;

    for(i=0;i<4;i++)
        scanf(" %s",&(*pter)[i]); //read strings

    for(i=0;i<4;i++)
        printf("String %d : %s\n",i+1,(*pter)[i]); //write strings

    system ("pause");
    return 0;
}

最佳答案

scanf可能不是正确的功能,请尝试使用strtok

#include <string.h>
#include <stdio.h>

#define MAX_LINE_LENGTH 80
#define MAX_TOKENS_PER_LINE 4

int main () {
    int i;
    char *aer[MAX_TOKENS_PER_LINE];
    char s[MAX_LINE_LENGTH];

    do {
        if (!fgets(s, MAX_LINE_LENGTH, stdin)) return -1;

        i = 0;
        while (
            i != MAX_TOKENS_PER_LINE
         && (aer[i] = strtok(i ? 0 : s, " \n"))
        ) i++;

        i = 0;
        while (
            i != sizeof(aer) / sizeof(aer[0])
         && aer[i]
        ) {
            fprintf(stdout, "%s\n", aer[i]);
            i++;
        }
    }
    while (aer[0]);

    return 0;
}


还要注意,您忘记为要解析的令牌分配内存。在我的示例中,内存是为整行分配的,strtok返回指向其中的子字符串的指针。

07-24 15:17