我想按用户接收名称。之后,我想在屏幕上打印收到的名称。例如 :
-扫描:
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返回指向其中的子字符串的指针。