【发布时间】:2017-07-17 08:24:01
【问题描述】:
我试图解决一个输入格式是这样的问题-
n // no. of strings
first string
second string
.....
nth string // n strings to be input separated by newlines
对于每一个输入的字符串,都要对其进行一些修改,然后输出修改后的字符串。
我没有使用 malloc 为 n 个字符串中的每一个分配单独的空间,而是尝试了这种方法:-
char str[MAX_SIZE];
scanf("%d",&no_of_testcases);
while(no_of_testcases -- ){
scanf("%[^\n]s",str);
/* some processing on the input string*/
/* printing the modified string */
}
不能在每次迭代中使用相同的空间(str)多次存储用户输入字符串吗?给定的代码没有按照我想要的方式运行/接受输入。
【问题讨论】:
-
c 还是 c++?选择。在我看来像 C。
-
问题是
%[^\n]s。s不属于那里。另外,你想吃整数后面的空格:scanf("%d ", ...) -
scanf("%[^\n]s",str);-->scanf("%[^\n]",str);。尾随s不是 scanset 指令的一部分。 -
@AnttiHaapala--
scanf("%d ", ...)。尾随空格将导致scanf()阻塞,等待非空格输入。 OP 也许应该这样做:scanf("%[^\n]s",str);-->scanf(" %[^\n]",str);(前导空格添加到格式字符串)。 -
避免更改帖子性质的编辑。如果需要追加附加数据。
标签: c arrays string input scanf