gpt4 book ai didi

c - 如何使用 scanf(不使用字符串函数)读取字符数组?

转载 作者:太空宇宙 更新时间:2023-11-04 07:18:43 25 4
gpt4 key购买 nike

我正在尝试使用 scanf 读取和打印字符数组。这是我的源代码。请问这段代码有什么错误吗?

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

void main()
{
int i;
char str[20];
printf( "Enter\n" );
for ( i=0; str[i] != '\0'; i++ )
scanf( "%s", &str[i] );
for ( i=0; str[i] != '\0'; i++ )
scanf( "%s\n", str[i] );
}

最佳答案

至少三个问题:第一个是str单个 字符串,而不是字符串数组,例如

char str[20][20];

第二个问题是您显然尝试使用 scanf 打印“字符串”。

第三个问题是您正在使用数组str,因为它被初始化了。局部变量初始化,它们的值是不确定的。这意味着 str 的内容看起来是随机的。使用未初始化的局部变量,就像您在第一个循环中所做的那样,会导致未定义的行为


修复(部分)代码的一种方法可能是

char strings[20][20];

int i;
for (i = 0; i < 20; ++i)
{
char *p = fgets(strings[i], sizeof(strings[i]), stdin);
if (p == NULL)
break; /* Error reading, or "end of file" */

/* The fgets function can leave the newline in the buffer, remove it */
if (strings[i][strlen(strings[i]) - 1] == '\n')
strings[i][strlen(strings[i]) - 1] = '\0';
}

for (int j = 0; j < i; ++j)
printf("String #%d: '%s'\n", i + 1, strings[i]);

关于c - 如何使用 scanf(不使用字符串函数)读取字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22713993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com