使用scanf函数逐个输入字符保存在字符数组中
时间: 2024-02-17 15:03:17 浏览: 89
好的,以下是C语言代码实现:
```
#include <stdio.h>
int main() {
char str[100];
int i = 0;
printf("请输入一个字符串:");
while(scanf("%c", &str[i]) != EOF && str[i] != '\n' && i < 99) {
i++;
}
str[i] = '\0';
printf("输入的字符串为:%s", str);
return 0;
}
```
这段代码中,我们使用了`scanf()`函数逐个输入字符,并将其保存在字符数组`str`中。我们使用了循环,当输入的字符不是EOF(文件结束符)或换行符`\n`,同时字符数组未满时,将字符保存在字符数组中,同时`i`自增1。最后,我们在字符数组的最后一个位置加上字符串结束符`\0`,以便使用`printf()`函数输出字符数组中的字符串。
相关问题
如何使用scanf函数将'USA', 'CHINA', 'JAPAN', 'KOREA', 'CUBA', 'ARGENTINA', 'PERU'这些国家名逐个输入到字符数组中?
你可以使用`scanf`函数配合字符数组来逐个输入这些国家名。这里是一个简单的示例,假设我们有一个名为`countries`的字符数组,它的大小足够存储所有国家名:
```c
#include <stdio.h>
#include <string.h>
#define MAX_countries 7 // 因为有7个国家名
char countries[MAX_countries][50]; // 每个国家名最多48个字符加上结束符'\0'
int main() {
int i = 0;
while (i < MAX_countries) {
printf("请输入第 %d 个国家名(如 USA):", i + 1);
scanf("%s", countries[i]); // 注意,%s会读取直到遇到空格或换行符
if (fgets(countries[i], sizeof(countries[i]), stdin) != NULL && strcmp(countries[i], " ") != 0) { // 判断是否输入了有效值并避免数组溢出
countries[i][strlen(countries[i])] = '\0'; // 添加字符串结束符
} else {
printf("输入无效,请重新输入。\n");
i--; // 如果输入错误,回退一位继续询问
}
i++;
}
// 现在countries数组包含了所有输入的国家名
for (i = 0; i < MAX_countries; i++) {
printf("%s\n", countries[i]);
}
return 0;
}
用scanf函数输入一个长度小于30的字符串进入数组a中,然后将数组a中的字符串复制至另一个数组中并输出,不用strcpy函数
好的,这是一个编程问题,我可以为您提供帮助。
您可以使用以下代码将输入的字符串复制到另一个数组中并输出:
```c
#include <stdio.h>
int main() {
char a[30], b[30];
int i;
printf("请输入一个长度小于30的字符串:");
scanf("%s", a);
printf("您输入的字符串为:%s\n", a);
for (i = 0; a[i] != '\0'; i++) {
b[i] = a[i];
}
b[i] = '\0';
printf("复制后的字符串为:%s\n", b);
return 0;
}
```
这个程序将输入的字符串存储在数组a中,然后将其复制到数组b中。为了复制,程序使用一个for循环,逐个将a中的字符复制到b中,直到遇到字符串的结尾标志'\0'。最后,程序输出原始字符串和复制后的字符串。
希望这个程序可以帮助您解决问题。
阅读全文