c - 如何使用指针将字符串输入正确存储到字符数组中?
问题描述
#include <stdio.h>
#include <stdlib.h>
int main()
{
char string[100];
int count=0;
char *pString = string;
printf("Enter a string: \n");
scanf("%s",string);
while(*pString != '\0')
count++;
printf("String is %d characters long",count);
return 0;
}
这是我的代码。我想编写一个简单的函数来计算字符串数组中的字符数。问题是我输入字符串后它卡住了。控制台只是冻结了。它不会释放输出。
解决方案
你可以使用类似的东西
#include <stdio.h>
#include <stdlib.h>
int main() {
char string[100];
int count = 0;
printf("Enter a string: \n");
char *pString = fgets(string, sizeof(string), stdin);
if (pString == NULL) {
fprintf(stderr, "failure reading from stdin\n");
exit(1);
}
while (*pString != '\0' && *pString != '\n') {
pString++;
count++;
}
printf("String is %d characters long", count);
return 0;
}
它使用 fgets 来检查缓冲区的长度。fgets 还返回用户输入的换行符,因此需要额外检查“\n”。就像在 arvin 提到的评论中一样,char 指针也需要在循环中递增。
推荐阅读
- django - 将 qs 添加到迭代器后,Jinja for 循环不起作用。姜戈
- html - 带有 ASP.NET Core 的 CSS HTML,在本地主机和生产环境(Docker)上以不同方式折叠表头文本
- objective-c - 在 OS X 10.11 及更高版本中获取有关 VPN 状态更改的通知
- node.js - 如何用剧作家检查一个元素是否在文档中?
- python - 使用 django 进行 Mongodb 聚合
- android - 启动广播接收器在小米的 miui 中不起作用(Poco x3)
- python - 获取 AttributeError:“TestInventorySellStock”对象在 pytest 框架下进行测试时没有属性“balance_inventory”
- r - 如何将行标题变成R中的单列?
- python - 如何在字符前后插入空格并在Python中换行?
- ssis - 如何确保一个 SSIS 任务在并行处理期间首先启动?